短いコードでも右肩上がりのグラフにできることの証明(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を開発できるように解説したページです。このページの内容をマス
-
MT4 チャート上にボタンを作る、シダの葉を作る、動画を作る
(MQL4)MT4のチャート上にボタンを作るやり方 現在のMT4は比較的いろいろな機能が追加されて
-
とある両建てロジックのEA検証(コードあり)
今回はちょっとしたシンプルな実験を行います。 お題は両建てです。 ポジションが0の場合SLTP付
-
EAが動かない原因と対処法 一覧[MT4/MT5]
「EAが動かな~い」というときには様々な原因と可能性がありますが、そんな時は一個一個原因を解消してい
-
株価指数両建て裁定取引のやり方と検証
日経225やダウ、SP500のチャートには強い相関関係があります。かつては「日経はニューヨークの後追