MT4 MQL EAつくーる EAつくーるというEA作成ソフトで作成したコード

MT4 MQL EAつくーる

EAつくーるというEA作成ソフトで作成したコード

//——————————————————————————————————–+
//メイン処理 |
//——————————————————————————————————–+
void OnTick(){
double lots;

if(Trade == false) return;

int sig_entry1 = EntrySignal1(MAGIC1);

int sig_exit3 = ExitSignal3(MAGIC1);

int sig_entry2 = EntrySignal2(MAGIC2);

int sig_exit4 = ExitSignal4(MAGIC2);

sig_entry1 = HedgeCheck(sig_entry1);
if(checkMaxPositions(MaxPositionCount) == false) sig_entry1 = 0;
if(sig_entry1 != 0 && nowbar1 != Bars){
lots = Lots;
if(OS(sig_ entry1, 0, lots, StopLoss, TakeProfit, MAGIC1, 0) == true){
//注文成功後の処理
nowbar1 = Bars;
}
}

if(sig_exit3 != 0){
OC(MAGIC1);
}

sig_entry2 = HedgeCheck(sig_entry2);
if(checkMaxPositions(MaxPositionCount) == false) sig_entry2 = 0;
if(sig_entry2 != 0 && nowbar2 != Bars){
lots = Lots;
if(OS(sig_entry2, 0, lots, StopLoss, TakeProfit, MAGIC2, 0) == true){
//注文成功後の処理
nowbar2 = Bars;
}
}

if(sig_exit4 != 0){
OC(MAGIC2);
}

return;
}

extern int MA_Period1 = 120;
extern int MA_Slide1 = 0;
extern int MA_Shift1 = 5;
extern int MA_Period2 = 120;
extern int MA_Slide2 = 0;
extern int MA_Shift2 = 3;
int EntrySignal1(int magic){
int sig;
int ret;
double pos = CurrentOrders(magic);
doub le val1 = iMA(Symbol(), 0, MA_Period1, MA_Slide1, MODE_LWMA, PRICE_CLOSE, MA_Shift1);
double val2 = iMA(Symbol(), 0, MA_Period2, MA_Slide2, MODE_LWMA, PRICE_CLOSE, MA_Shift2);
if(val1 < val2) sig = 1;
if(pos == 0 && sig == 1) ret = 1;
if(pos == 0 && sig == -1) ret = -1;
return(ret);
}

extern int MA_Period3 = 120;
extern int MA_Slide3 = 0;
extern int MA_Shift3 = 5;
extern int MA_Period4 = 120;
extern int MA_Slide4 = 0;
extern int MA_Shift4 = 3;
int EntrySignal2(int magic){
int sig;
int ret;
double pos = CurrentOrders(magic);
double val1 = iMA(Symbol(), 0, MA_Period3, MA_Slide3, MODE_LWMA, PRICE_CLOSE, MA_Shift3);
double val2 = iMA(Symbol(), 0, MA_Period4, MA_Slide4, MODE_LWMA, PRICE_CLOSE, MA_Shift4);
if(val1 > val2) sig = -1;
if(pos == 0 && sig == 1) ret = 1;
if(pos == 0 && sig == -1) ret = -1;
return(ret);
}

extern int MA_Period5 = 120;
extern int MA_Slide5 = 0;
extern int MA_Shift5 = 5;
extern int MA_Period6 = 120;
extern int MA_Slide6 = 0;
extern int MA_Shift6 = 3;
int ExitSignal3(int magic){
int ret, sig;
double pos = CurrentOrders(magic);
double val1 = iMA(Symbol(), 0, MA_Period5, MA_Slide5, MODE_LWMA, PRICE_CLOSE, MA_Shift5);
double val2 = iMA(Symbol(), 0, MA_Period6, MA_Slide6, MODE_EMA, PRICE_WEIGHTED, MA_Shift6);
if(val1 > val2) sig = 1;
if(pos > 0 && sig == 1) ret = 1;
if(pos < 0 && sig == -1) ret = -1;
return(ret);
}

extern int MA_Period7 = 120;
extern int MA_Slide7 = 0;
extern int MA_Shift7 = 5;
extern int MA_Period8 = 120;
extern int MA_Slide8 = 0;
extern int MA_Shift8 = 3;
int ExitSignal4(int magic){
int ret, sig; double pos = CurrentOrders(magic);
double val1 = iMA(Symbol(), 0, MA_Period7, MA_Slide7, MODE_LWMA, PRICE_CLOSE, MA_Shift7);
double val2 = iMA(Symbol(), 0, MA_Period8, MA_Slide8, MODE_LWMA, PRICE_CLOSE, MA_Shift8);
if(val1 < val2) sig = -1;
if(pos > 0 && sig == 1) ret = 1;
if(pos < 0 && sig == -1) ret = -1;
return(ret);
}

このコードに以下のコードを組み込みたいのですがプログラミングの知識がなく困っています
挿入する部分を教えて頂くか、組み込んだ状態のコードを回答していただきたいです
お願いします

for(int i=OrdersHistoryTotal()-1;i>=0;i–){
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderCloseTime()!=0 && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic){
break;
}
}
if(OrderCloseTime()>=Time[0] && OrderTakeProfit()<0){
if(OrderType() == 0){
買いポジションが最新チャート内で損失
}
if(OrderType() == 1){
売りポジションが最新チャート内で損失
}

..[補足]..
//——————————————————————————————————–+
//損益取得関数 |
// 処理:ポジションの損益を取得。 |
// 引数:損益を取得するポジションのマジックナンバー |
// 戻り値:ポジションの損益 |
//——————————————————————————————————–+
double getOrderProfit(int magic){
double profit;
for(int i = 0; i < OrdersTotal(); i++){
if(OrderSelect(i, SELECT_BY_POS,MODE_TRADES) == false) break;
if(OrderSymbol() != Symbol() || OrderMagicNumber() != magic) continue;
if(OrderType() == OP_BUY || OrderType() == OP_SELL){
profit += OrderProfit() ;
}
}
return(profit);
}
このような項目もあったのですがこれも必要な部分ですかね

回答1

似たような質問に回答させていただいたことがあります。
こちらの質問でも回答させていただいているとおり
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1115958507…

残念ながら
自分で一からプログラムできるプログラマーにとっても
自動プログラムソフトが書きだしたプログラムをいじるのは
自分で一からプログラムするよりも骨が折れます。

なぜかというと、上記のURLでも回答している通り
プログラムができる人間は、関数化したり、classを使ったり、ファイル分割をして
テンプレート化し、
ソースコードを整理して非常に簡潔にアプリケーション開発ができる
開発環境を各々作っています。

実は、プログラムの初心者が思っているほど
高度なことはやっていません。
高度なのは、開発環境、ソースコードの整理整頓管理技術です。

ですので自動プログラムソフトが書きだした、
非常に無秩序なソースコードを
プログラマーに直してくれと質問しても
自分で一からプログラムするよりも骨の折れる作業を
やってくれる回答者は、いないかと思います。

回答2

バカバカしい。。。。。

どうせ、お前はバカ過ぎて元々のEAが何をしてるのかも分かっておらず

また、どこから持ってきたのか知らないが、追加のプログラムの意味も理解していない

当然補足の内容も宇宙語程度にしか分かってない

大馬鹿野郎であるw

要するに質問が成立してる可能性は保々ゼロって事だボケ


回答3

>fxcoffeeさん

***手抜き調査方法
元のソースをバックアップして
不要だと思うところを削って
動かして挙動の違いをみれば
必要かどうか
それが無いとどうなるかがわかりやすい
関数そのものを削ると修正が大変なので
0しかかえさないようにしてみるとか
適当な数字しかかえさないバージョン作って
挙動の違いをみれば
どういう役割で
必要かどうかを判断できる
(調べる方法の1つで楽だと思うソースマジメに読むより)

***正攻法は
わからない命令は

ツール名 キーワード

で簡単に調べれるので
真面目にソース読む


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA