短いコードでも右肩上がりのグラフにできることの証明(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検証(コードあり)
今回はちょっとしたシンプルな実験を行います。 お題は両建てです。 ポジションが0の場合SLTP付
-
入門者のEA自作のための作り方講座(MQL4/MT4)
プログラミング初心者の方が初めてでもEAを開発できるように解説したページです。このページの内容をマス
-
(MQL4)初めてのEA自作のための教科書~実用編~[EA自作]
実用に向けたEAのコーディングについて説明します。本当に1からEAの開発について知りたい方はこちら。
-
プログラマ向け自動売買開発アイディア
「MQL4/MQL5は扱えるようになったけど、プログラミングのアイディアがない」というプログラマは比