すべての注文を合計利益(pips)で決済するにはどうすればよいですか? - ページ 7

 
khasan kayumov:
どなたか、すべての注文をpips単位の利益の合計で決済する方法を教えてください。

書き込みを読んで、理解できないものもありました。出会っていないのでしょうね。

私はこの質問を次のように理解しました:異なる商品のオープンオーダーを利益に達したときにクローズする方法。

もしかしたら、あまりスマートではないかもしれませんが、これが私の実装方法です。

extern int    iPrftAc       = 35;   // Закрытие всех ордеров по текущему счету.
.......

if (AccountProfit() > iPrftAc)
   {
    Print("//--> Закрытие ордеров: Условие достижения ПРИБЫЛИ ПО ТЕКУЩЕМУ СЧЕТУ!;");
    vOrderClose(9,0,"");          
   }
........
void vOrderClose(int f_iTypOrdDel,  //Тип операции выбранного ордера на удаление
                 int f_iOrderTicket,//Номер тикета ордера
                 string f_sNamSig)  //Наименование сигнала
{
.......
 if (f_iTypOrdDel==9) // Удаление всех открытых и отложенных ордеров по всем финансовым инструментам.
     {
      int CloseOrdSymAll = 0;
      do {
          CloseOrdSymAll = 0;
          for (int i=0; i<=OrdersTotal(); i++)
            {
             if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true)
                {
                 switch(OrderType())
                    {
                     case OP_BUY     :f_sCmdType = "OP_BUY";
                                      f_bResult = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),iSlippage,clrBlue);
                                      if (f_bResult == true) Print("//---> vOrderClose: ",f_iTypOrdDel,") Order(#",OrderTicket(),") Type(#",OrderType(),") ",f_sCmdType,"  successfully");
                                      else {
                                            Print("//--->vOrderClose: № ",f_iTypOrdDel,". Order(#",OrderTicket(),") Type(#",OrderType(),") ",f_sCmdType,", failed. Error:", GetLastError());
                                            Sleep(1000);
                                           }  
                                      CloseOrdSymAll++;
                                      break;
                                         
                     case OP_BUYLIMIT:f_sCmdType = "OP_BUYLIMIT";
                                      f_bResult = OrderDelete(OrderTicket(),CLR_NONE);
                                      if (f_bResult == true) Print("//---> vOrderClose: ",f_iTypOrdDel,") Order(#",OrderTicket(),") Type(#",OrderType(),") ",f_sCmdType," successfully");
                                      else {
                                            Print("//--->vOrderClose: № ",f_iTypOrdDel,". Order(#",OrderTicket(),") Type(#",OrderType(),") ",f_sCmdType,", failed. Error:", GetLastError());
                                            Sleep(1000);
                                           }  
                                      CloseOrdSymAll++;
                                      break;
                                         
                     case OP_BUYSTOP :f_sCmdType = "OP_BUYSTOP";
                                      f_bResult = OrderDelete(OrderTicket(),CLR_NONE);
                                      if (f_bResult == true) Print("//---> vOrderClose: ",f_iTypOrdDel,") Order(#",OrderTicket(),") Type(#",OrderType(),") ",f_sCmdType," successfully");
                                      else {
                                            Print("//--->vOrderClose: № ",f_iTypOrdDel,". Order(#",OrderTicket(),") Type(#",OrderType(),") ",f_sCmdType,", failed. Error:", GetLastError());
                                            Sleep(1000);
                                           }  
                                      CloseOrdSymAll++;
                                      break;
                                         
                     case OP_SELL    :f_sCmdType = "OP_SELL";
                                      f_bResult = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),iSlippage,clrRed);
                                      if (f_bResult == true) Print("//---> vOrderClose: ",f_iTypOrdDel,") Order(#",OrderTicket(),") Type(#",OrderType(),") ",f_sCmdType," successfully");
                                      else {
                                            Print("//--->vOrderClose: № ",f_iTypOrdDel,". Order(#",OrderTicket(),") Type(#",OrderType(),") ",f_sCmdType,", failed. Error:", GetLastError());
                                            Sleep(1000);
                                           }  
                                      CloseOrdSymAll++;
                                      break;
                                         
                     case OP_SELLLIMIT:f_sCmdType = "OP_SELLLIMIT";
                                       f_bResult = OrderDelete(OrderTicket(),CLR_NONE);
                                       if (f_bResult == true) Print("//---> vOrderClose: ",f_iTypOrdDel,") Order(#",OrderTicket(),") Type(#",OrderType(),") ",f_sCmdType," successfully");
                                       else {
                                             Print("//--->vOrderClose: № ",f_iTypOrdDel,". Order(#",OrderTicket(),") Type(#",OrderType(),") ",f_sCmdType,", failed. Error:", GetLastError());
                                             Sleep(1000);
                                            }  
                                       CloseOrdSymAll++;
                                       break;
                                         
                     case OP_SELLSTOP :f_sCmdType = "OP_SELLSTOP";
                                       f_bResult = OrderDelete(OrderTicket(),CLR_NONE);
                                       if (f_bResult == true) Print("//---> vOrderClose: ",f_iTypOrdDel,") Order(#",OrderTicket(),") Type(#",OrderType(),") ",f_sCmdType," successfully");
                                       else {
                                             Print("//--->vOrderClose: № ",f_iTypOrdDel,". Order(#",OrderTicket(),") Type(#",OrderType(),") ",f_sCmdType,", failed. Error:", GetLastError());
                                             Sleep(1000);
                                            }  
                                       CloseOrdSymAll++;
                                       break;
                    }
                }    
            }          
         }
     }
}
//+------------------------------------------------------------------+
//|Конец                                                             |
//+------------------------------------------------------------------+
 

私が理解できないのは、このことです。

お金を稼いでいるのか、ポイントを稼いでいるのか?

すべてのトレードの合計利益(お金で!)が自分に合っていれば、すべてを決済すればいいのです。

 
Artemij:

私が理解できないのは、このことです。

お金を稼いでいるのか、ポイントを稼いでいるのか?

必要な(MAIN!)結果が常に目の前にあるのに、なぜわざわざ複雑な結果を探すのか:すべての取引の合計利益(お金で!)が自分に合っていれば、全部を決済すればいいのです!(MAIN!)


利益がお金になっているのであれば、ロットサイズを変更したときに、比例して利益の値も変更しなければなりません。これは不便だ。

 
Vadym Kulish:

書き込みを読んで、理解できないものもありました。出会っていないのでしょうね。

私はこの質問を次のように理解しました:異なる商品のオープンオーダーを利益に達したときにクローズする方法。

あまりスマートではないかもしれませんが、私はこの質問をこのように実装しました。

なぜ、このような大きな間が必要なのでしょうか。今はすべてが高速に動いています。

まったく間を置かずに閉じる。

 
Renat Akhtyamov:

なぜ、長い沈黙が必要なのでしょうか?今、高速で走っています・・・。

まったく間が持たないんです。


以前のコードの名残りです。エラーの性質や意味を理解せずにMarketInfo(OrderSymbol(),MODE_ASK)。 念のため、置いておきました。Expert Advisorは不完全なものです。