//проверяем если есть поза, стоит стоп и не стоит БУ if((OrdersTotal()>0)&&(OrderStopLoss()!=0)&&(OrderStopLoss()!= SLBU))
ModifySLinBU();//передаем управление в ф-ю установки БУ
それとも
//проверяем если есть поза, стоит стоп и не стоит БУ if((OrdersTotal()>0)&&(OrderStopLoss()!=0&& SLBU))
ModifySLinBU();//передаем управление в ф-ю установки БУ
//+------------------------------------------------------------------+//| Открытие позиции на покупку//+------------------------------------------------------------------+void OpenBuy(){RefreshRates();if((OrdersTotal()==0)&&(Ask== Enter))//бъем до упора эту цену{if(IsTradeContextBusy()==false){OrderSend(Symbol(),OP_BUY, Lot, Enter, Slippage,0,0,0, MAGIC,0, clOpenBuy);if(OrdersTotal()>0){
Modify =false;//флаг установки SL и TP - не установлен
ModifySL();}elsePrint("Ошибка установки ордера BAY по цене ",OrderOpenPrice()," код ошибки ="+GetLastError());}}if( UseSound)PlaySound( NameFileSound);}//+------------------------------------------------------------------+//| Открытие позиции на продажу//+------------------------------------------------------------------+void OpenSell(){RefreshRates();if((OrdersTotal()==0)&&(Bid== Enter))//бъем до упора эту цену{if(IsTradeContextBusy()==false){OrderSend(Symbol(),OP_SELL, Lot, Enter, Slippage,0,0,0, MAGIC,0, clOpenSell);if(OrdersTotal()>0){
Modify =false;//флаг установки SL и TP - не установлен
ModifySL();}elsePrint("Ошибка установки ордера SELL по цене ",OrderOpenPrice()," код ошибки ="+GetLastError());}}if( UseSound)PlaySound( NameFileSound);}//+------------------------------------------------------------------+//| Модификация ордера на установку SL и TP |//+------------------------------------------------------------------+void ModifySL(){if(OrderSelect(0, SELECT_BY_POS)==true)// Если есть открытый ордер{if(OrderType()==OP_BUY){
StopL = SLB();
TakeP = TPB();
Modify =OrderModify(OrderTicket(),OrderOpenPrice(), StopL, TakeP,0,Red);if( Modify ==false)Print("Ошибка изменения ордера #",OrderTicket()," при попытке установить СТОП ", StopL,". Текущая цена- ",Bid,", код ошибки ="+GetLastError());}else{
StopL = SLS();
TakeP = TPS();
Modify =OrderModify(OrderTicket(),OrderOpenPrice(), StopL, TakeP,0,Red);if( Modify ==false)Print("Ошибка изменения ордера #",OrderTicket()," при попытке установить СТОП ", StopL,". Текущая цена- ",Ask,", код ошибки ="+GetLastError());}}}
次にint Start()で変更の有無をチェック...
//+------------------------------------------------------------------+//| Проверка открытого оредра на установку SL,TP и установка SL,TP//+------------------------------------------------------------------+if((OrdersTotal()>0)&&( Modify ==false)) ModifySL();//SL и TP - не установлен
for(int i=1; i<=OrdersTotal(); i++)//Цикл по всем ордерам,..{//отражённым в терминалеif(OrderSelect( i-1, SELECT_BY_POS)==true)//Если есть следующий {if(OrderSymbol()==Symbol()){if(OrderType()==OP_BUY){...}else{...}}}}//Конец тела цикла
また、3つの基準で足の状態を正しく確認できているか?
それとも
このフォーラムで「ピリオドシフト」という言葉を聞いたことがありますか?
説明しよう。例えば、H4ローソク足は、すべての証券会社で異なっている、それは明らかである - サーバーの時間が異なっているため。最大、最小、開、閉など、出力で他の特性を得るために、時間に応じてこれらの燭台をシフトする方法...
これは何のためにあるのでしょうか?私の証券会社ではローソク足が同じで、Expert Advisorで実装したストラテジーは動作しますが、チャートのミスマッチのエラーが多発しています。(私が理解する限り、これは私の証券会社の問題であり、フォーラム参加者の分析中には歓迎されません!)
しかし、MetaQuotesの履歴をダウンロードしてもエラーは出ないのですが、目視テストでも ローソク足があまりシグナルを出さず、それを使ったEAテストでは悪い結果が出てしまいます。
そこで、自分の証券会社や別の証券会社に合わせてローソク足を「ずらす」ことを考えるようになったのです。
DCのエラーを減らし、モデリング品質を向上させる方法とは?
ユーロ/0.1-10ロット/1年/300-322000
注文の変更処理が正しく行われているかどうかを確認する?ここで考えられる落とし穴は何でしょうか?
次にint Start()で変更の有無をチェック...
ご協力いただいた方、ありがとうございました!)
現在、異なるシンボルで同時にEAを実行する方法を学んでいるところです...。
このバリアントは、EAが実行されているシンボルに属する注文を 見つけるのに適しているかどうか教えてください。