短いコードでも右肩上がりのグラフにできることの証明(MT4EA)非実用
バックテスト結果
ソースコードはこちら
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自作]
関連記事
-
-
(MQL4)インジケーターをEA化するやり方[EA自作]
iCustomでZigZagをEA化する(初歩編) インジケーターとiCustom 今回はインジ
-
-
MT4 チャート上にボタンを作る、シダの葉を作る、動画を作る
(MQL4)MT4のチャート上にボタンを作るやり方 現在のMT4は比較的いろいろな機能が追加されて
-
-
プログラマ向け自動売買開発アイディア
「MQL4/MQL5は扱えるようになったけど、プログラミングのアイディアがない」というプログラマは比
-
-
EAが動かない原因と対処法 一覧[MT4/MT5]
「EAが動かな~い」というときには様々な原因と可能性がありますが、そんな時は一個一個原因を解消してい
-
-
とある両建てロジックのEA検証(コードあり)
今回はちょっとしたシンプルな実験を行います。 お題は両建てです。 ポジションが0の場合SLTP付