短いコードでも右肩上がりのグラフにできることの証明(MT4EA)非実用
バックテスト結果
ソースコードはこちら
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
input double Lot = 0.01; input int StopLoss = 300; input int TakeProfit = 50; input int Slippage = 3; input int StartHour = 21; input int Distance = 50; input int Expiration = 4; input int MAGIC = 234234234; void OnTick() { int b_o=0,s_o=0,R; double BuyPrice=NormalizeDouble(iClose(Symbol(),Period(),1)-Distance*Point,Digits); double SellPrice=NormalizeDouble(iClose(Symbol(),Period(),1)+Distance*Point,Digits); datetime expiration = TimeCurrent()+3600*Expiration; for(int i=0; i<OrdersTotal(); i++) { if(OrderSelect(i, SELECT_BY_POS)==true) { if( OrderSymbol() !=Symbol() || OrderMagicNumber() != MAGIC ) continue; if( OrderType() == OP_BUYLIMIT ) b_o++; if( OrderType() == OP_SELLLIMIT ) s_o++; } } if( Hour() == StartHour && b_o<1 ) { R = OrderSend(Symbol(),OP_BUYLIMIT,Lot,BuyPrice,Slippage,NormalizeDouble(BuyPrice-StopLoss*Point,Digits),NormalizeDouble(BuyPrice+TakeProfit*Point,Digits),"",MAGIC,expiration,clrBlue); } if( Hour()==StartHour && s_o<1 ) { R = OrderSend(Symbol(),OP_SELLLIMIT,Lot,SellPrice,Slippage,NormalizeDouble(SellPrice+StopLoss*Point,Digits),NormalizeDouble(SellPrice-TakeProfit*Point,Digits),"",MAGIC,expiration,clrRed); } return; } |
33行あるやんけ…
GBP絡みのうねりの激しい通貨ペアではやや右肩あがりになるようです。
もちろん、実戦で使えるような代物ではないです。ストップレベルも狭いアカウントでないと機能しないですし、フェイルセイフその他もありません。
オーダーもSLTPを分けていないので、口座タイプによってはオーダーが一回も通らないかもしれません。
ただ「勝てるEAは大掛かりなコードでできているんだ」という意見に対する僕なりの反論です。
普通はこれにいろいろ肉付けをして、短くても150行。長い場合は500行くらいでしょうか。1000行越えの場合もありますが、そこまでいくと一部をDLLやインジケーターにするべきだと思います。
(MQL4)初めてのEA自作のための教科書~実用編~[EA自作]
関連記事
-
入門者のEA自作のための作り方講座(MQL4/MT4)
プログラミング初心者の方が初めてでもEAを開発できるように解説したページです。このページの内容をマス
-
プログラマ向け自動売買開発アイディア
「MQL4/MQL5は扱えるようになったけど、プログラミングのアイディアがない」というプログラマは比
-
とある両建てロジックのEA検証(コードあり)
今回はちょっとしたシンプルな実験を行います。 お題は両建てです。 ポジションが0の場合SLTP付
-
EAが動かない原因と対処法 一覧[MT4/MT5]
「EAが動かな~い」というときには様々な原因と可能性がありますが、そんな時は一個一個原因を解消してい
-
[MT4]EAに口座縛り/期間限定縛りをかける種類と方法(MT5)
良いEAができた場合、身内で配布したい場合があります。しかし、知らない間に自分のEAが出回っていた場