初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 475

 
alph:
このようなテスターを実際に使用されている方、教えてください。また、デポ3000ドルでの年間成績は良いのでしょうか、悪いのでしょうか?

シミュレーションの品質が99.9%でも、ストラテジーテスターは 必ず嘘をつく!

EAを確認するにはデモ口座でリアルタイムVPNサーバーに乗せるしかない...Microsoft Azureは1ヶ月間ほぼ無料でサーバーを提供してくれる、YouTubeで調べると1ドル必要!...他にもVPNサービスはあるが、無料利用期間は最大10日間となっている。

 

みんな!EAでマニュアル取引をプログラム的に禁止することは可能ですか?

 

このブロックは、ターミナルで設定された任意のシンボルに対して、マジックと_Symbolを無視して、すべての保留中のストップオーダーを削除する理由を教えてください。

//--------------------------------------------------------------------------------------------------------------
//       Блок удаления отложенников по типу ордера
//--------------------------------------------------------------------------------------------------------------
int dell_ord_by_type(int type_ord, int _magic)
{   
   bool ticketmdf;
   int j;
  
   int orders=OrdersTotal();
   for(int i=0;i<orders;i++)//--- пробежим по списку ордеров
   {     
         if( OrderGetString(ORDER_SYMBOL) ==Symbol() && OrderGetInteger(ORDER_MAGIC)==_magic && OrderGetInteger(ORDER_TYPE) ==type_ord)   
         {  
            if(OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_BUY_STOP || OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_SELL_STOP)
            {       
               for(j=Appempts; j>0; j--) 
               { 
               //----------------------------------------------------------------------
               MqlTradeResult result={0}; 
            MqlTradeRequest request={0};
            request.order=OrderGetTicket(i);
            request.symbol = _Symbol;
            request.magic = _magic;
            request.action=TRADE_ACTION_REMOVE;
            ticketmdf=OrderSend(request,result);
            
                  if(ticketmdf==true)
                  {
                     Print("Успешно удалён ордер");
                     Sleep(2000);
                     break;                    
                  }
                  if(ticketmdf==false)                     
                  {
                     Print("Ошибка при удалении ордера # ",+GetLastError());
                     Sleep(7000);
                  }
               }                            
            }                       
         }                        
   }
   return(true);  
}
 
Aleksandr Prishenko:

このブロックは、ターミナルで設定された任意のシンボルに対して、マジックと_Symbolを無視して、すべての保留中のストップオーダーを削除する理由を教えてください。

1.順番は最初に選択する必要があります。

2.ループは最後のオーダーから構築する必要がある、すなわち for( i = orders-1; i >= 0; i-- )

 
Aleksandr Prishenko:

このユニットでは、ターミナルで設定した任意のシンボルに対して、マジックや_Symbolを無視して、保留中のストップオーダーをすべて削除してしまうのですが、その理由を教えてください。

注文を選択 する必要があります。

...
   int orders=OrdersTotal();
   for(int i=0;i<orders;i++)//--- пробежим по списку ордеров
     {
      if(OrderSelect(ххх,ххх,хххх)==true)
        {
         if(OrderGetString(ORDER_SYMBOL)==Symbol() && OrderGetInteger(ORDER_MAGIC)==_magic && OrderGetInteger(ORDER_TYPE)==type_ord)
           {
...
 
Vladimir Tkach:

みんな!EAでマニュアル取引をプログラム的に禁止することは可能ですか?

もちろん、そんなことはありません。
 
Karputov Vladimir:

注文を 選ぶのはあなたです。

この文は正しい。実装が正しくない。OrderSelect()のチケットはどこで手に入れるのでしょうか?
 

これは正しいことなのでしょうか?

Alexey Kozitsyn さんKarputov Vladimir さん、ヒントをありがとうございます。

int dell_ord_by_type(int type_ord, int _magic)
{   
   bool ticketmdf;
   int j;
 int orders=OrdersTotal();
   for(int i=0;i<orders;i++)//--- пробежим по списку ордеров
   { 
   ResetLastError();    
  ulong ticket=OrderGetTicket(i);
      if(ticket!=0)// если ордер успешно скопирован в кэш, работаем с ним  

      {      
         if( OrderGetString(ORDER_SYMBOL) ==_Symbol && OrderGetInteger(ORDER_MAGIC)==_magic && OrderGetInteger(ORDER_TYPE) ==type_ord)   
         {  
            if(OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_BUY_STOP || OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_SELL_STOP)
            {       
               for(j=Appempts; j>0; j--)
               { 
 

上に書いてあるように、注文が削除されると、そのサイクルを逆転させなければならないのです。あるオーダーが削除されると、残りのオーダーのインデックスが移動する。

int dell_ord_by_type(int type_ord, int _magic)
{
   ulong nOrderTicket = 0;
   
   for(int i = OrdersTotal() - 1; i >= 0; i--)   //--- пробежим по списку ордеров
   {
      nOrderTicket = OrderGetTicket(i);
        
      if(nOrderTicket > 0 && OrderGetString(ORDER_SYMBOL) == Symbol() && OrderGetInteger(ORDER_MAGIC) == _magic && OrderGetInteger(ORDER_TYPE) == type_ord)   
      {  
         if(OrderGetInteger(ORDER_TYPE) == ORDER_TYPE_BUY_STOP || OrderGetInteger(ORDER_TYPE) == ORDER_TYPE_SELL_STOP)
         {       
            // удаляем
         }
      }
   }
        
   return(0);  
}
 
ところで、あなたのバージョンでは、関数は常に真を返すのに、なぜintと宣言するのですか?)
理由: