[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 126

 
agat8430:


それから、私の言っていることが理解できるのであれば、ハッキングされているように見えないようにコードを編集する方法を教えてください。初めて掲示板を見たのですが、きれいな答えが返ってきました。

"天才的な人は、天才的な答えを出す"


変数に読みやすい名前をつける。
 
hoz:


いや、止まらないで。その一端を掲載しました。これが私のブレークイーブン関数です。

この線は、計算されたストップがすでに持っているストップと同じであれば、修正はないことを明確に示していますそうだろ?では、当初は小切手があったのですか?しかし、修正関数の前のスタートで別の条件を入力するまでは、エラー1が常に出ていました。

というわけで...。を理解したいのです。すべて説明し尽くしたつもりです。

SLやTPの設定、L/Sへの切り替え、トレールポジション、試行錯誤を伴う注文など、あらゆる修正に対応する機能です。

そして、スタートは位置の選択、条件、警告を規定するだけでよいのです。以下はその機能です。

void ModifyOrder(int ticket,double price,double stoploss,double takeprofit,datetime e,color arrow_color)
{
  int ModifyCnt = 0, err;
  while(ModifyCnt < 3)
  {
    if(OrderModify(ticket,NormalizeDouble(price,Digits),NormalizeDouble(stoploss,Digits),
    NormalizeDouble(takeprofit,Digits),0,arrow_color))
    ModifyCnt = 3;
    else err = GetLastError();
    if(err > 0)
    { 
      Print(ModifyCnt," #",ticket," Error modifing order: (", err , ") " , ErrorDescription(err));
      Sleep(5000); RefreshRates(); ModifyCnt++;
} } }
小さいけど、大きいんです!
 


ありがとうございました。必ず読みます。

世の中には、いい人がいないわけではない。

 
hoz:

すべての未決済注文を変更するのではなく、変更するようにしたいのですが。


すべてのオープンオーダーではなく、開始と最後のT/Pオーダーだけを変更したいのですが。以下はそのコードです。

 /* Так и до бана не далеко */
 

こんにちは。 私は、すでに形成されたバー(すなわちバー1)から別のウィンドウで指標の値を取得し、バー0の最初のティックで一度カウントします。 すべてが迅速にかつ正確に動作します。しかし、コンピュータの電源を切り、しばらくしてから電源を入れ直すと、インジケータは正常に動作し続けますが、コンピュータがオフだったときの値は、ただの空白になっています。 しかし、TFからTFに切り替えると、すべての「欠損」値が表示されるのです。CCI、AOなどのインジケータは標準的な ものです。コードはフォーラムから引用しましたので、添付します。私が間違っているところ、理解できないところを説明してください。



      Код №1
        ------


int start()
  {  
              
//--------------------------------------------------------------------
   Fun_New_Bar();                               // Обращение к ф-ии
   if (New_Bar==false)                          // Если бар не новый..
      return;                                   // ..то уходим
//--------------------------------------------------------------------    
        
    int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;

   for(int i=0;i<limit;i++)
       
//-------------------------------      
   { 
   
              
      КОД ИНДИКАТОРА
      
                               
   }     
//-------------------------------
   return(0);
 
  }
   
//+------------------------------------------------------------------+  
void Fun_New_Bar()                              // Ф-ия обнаружения ..
  {                                             // .. нового бара
   static datetime New_Time=0;                  // Время текущего бара
   New_Bar=false;                               // Нового бара нет
   if(New_Time!=Time[0])                        // Сравниваем время
     {
      New_Time=Time[0];                         // Теперь время такое
      New_Bar=true;                             // Поймался новый бар
     }
  }
//--------------------------------------------------------------------  



        Код №2
        ------


int start()
{  
     if (NewBar() == true)
  {  
         
    int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;

   for(int i=0;i<limit;i++)
//-------------------------------      
   { 
   
              
      КОД ИНДИКАТОРА
      
                               
   }     
//-------------------------------           
  }    

   return(0); 
}
   
//+------------------------------------------------------------------+    
bool NewBar()
{
   static datetime lastbar = 0;
   datetime curbar = Time[0];
   if(lastbar!=curbar)
   {
      lastbar=curbar;
      return (true);
   }
   else
   {
      return(false);
   }
}


      
          Код №3
          ------


//--- buffers
double ExtMapBuffer1[];
//--- for one bar
datetime Last,New;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,ExtMapBuffer1);
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    New=Time[0]; 
      
     if(Last!=New)     
   {
  
  int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;
//----
   for(int i=0;i<limit;i++)
//-------------------------------      
   { 
   
              
      КОД ИНДИКАТОРА
      
                               
   }     
//-------------------------------             
   
    Last=New;
   }     
//----
   return(0);
  }
//+------------------------------------------------------------------+




       Код №4
       ------


int start()
  {
      if(last>=Time[0]) return;
  
    int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;
//----
   for(int i=0;i<limit;i++)
       
//-------------------------------      
   { 
   
              
      КОД ИНДИКАТОРА
      
                               
        
//-------------------------------              
       
      last=Time[0];      
   } 
//----
   return(0);
  }
//+------------------------------------------------------------------+

 
borilunad:

SLやTPの設定、B/Sへの転送、ポジションや注文の試行錯誤やエラーチェックなど、すべての修正に対応する機能を備えています。

スタート時のポジション選択、条件、警告の規定だけでいいんです。以下はその機能です。

小さくても賢い!?


うわー :)ありがとうございます。見てみないとわからないですねー。
 
agat8430:


T/Pですべてのオープンオーダーではなく、スタートとラストオーダーだけを変更したいのですが、自分用のEAを作りたいのですが、どうしたらいいですか?

実は、クローズド・オーダーはすべて「選別」すべきなのです。もちろん、マジシャンやシンボルは除きます。そして、修正する最初のオーダーと最後のオーダーを選択する必要があります。

OrderSelect(g_pos_300, SELECT_BY_POS, MODE_TRADES); - これが最後のオーダーです。

そして、OrderSelect(0, SELECT_BY_POS, MODE_TRADES);- これが最初のオーダーとなります。

言語に関する質問のある枝ですが、質問にお答えしました。ここではボットはリデザインに関与していません。しかし、Expert Advisorに組み込むには、わずかな言葉の理解で上記のすべてを見つけることができます。お役に立てれば幸いです...。

 
agat8430:


すべてのオープンオーダーではなく、開始と最後のT/Pオーダーだけを変更したいのです。すべてのオープンオーダーではなく、最後のT/Pオーダーだけを変更したいのですが。

アイテム捕獲のために、キムさんの「便利機能」をほぼフル活用!?

https://www.mql5.com/ru/forum/131859

 
hoz:

一般に、クローズド・オーダーは「スクリーンアウト」されるべきで、もちろんマジシャンとシンボルはカウントされない。次に、修正する最初のオーダーと最後のオーダーを選択します。

OrderSelect(g_pos_300, SELECT_BY_POS, MODE_TRADES);- これが最後のオーダーです。

そして、OrderSelect(0, SELECT_BY_POS, MODE_TRADES);- これが最初のオーダーとなります。

言語に関する質問のある枝ですが、質問にお答えしました。ここではボットはリデザインに関与していません。しかし、Expert Advisorに組み込むためのものは、ほんの少し言葉を理解すれば、すべて見つけることができます。お役に立てれば幸いです...。

すみません、うまくいきません!最初でも最後でもない!?
 
MK07:

私は、すでに形成されたバー(すなわちバー#1)から別のウィンドウで指標値を取得し、その最初のティックでバー#0に一度カウントします。すべてが迅速かつ正確に動作しますが、私はコンピュータをオフにして、いくつかの時間後に再びオンにすると、指標は正常に動作し続けていますが、コンピュータがオフだった時の値が存在しない。コードは標準的な指標であるCCI、AOなどです。フォーラムから取りましたので、添付します。

コード番号1

        ------


int start()
  {  
              
//--------------------------------------------------------------------
   Fun_New_Bar();                               // Обращение к ф-ии
   if (New_Bar==false)                          // Если бар не новый..
      return;                                   // ..то уходим
//--------------------------------------------------------------------    
        
    int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;

   for(int i=0;i<limit;i++)
       
//-------------------------------      
   { 
   
              
      КОД ИНДИКАТОРА
      
                               
   }     
//-------------------------------
   return(0);

  }
   
//+------------------------------------------------------------------+  
void Fun_New_Bar()                              // Ф-ия обнаружения ..
  {                                             // .. нового бара
   static datetime New_Time=0;                  // Время текущего бара
   New_Bar=false;                               // Нового бара нет
   if(New_Time!=Time[0])                        // Сравниваем время
     {
      New_Time=Time[0];                         // Теперь время такое
      New_Bar=true;                             // Поймался новый бар
     }
  }

//--------------------------------------------------------------------  

        Код №2
        ------


int start()
{  
     if (NewBar() == true)
  {  
         
    int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;

   for(int i=0;i<limit;i++)
//-------------------------------      
   { 
   
              
      КОД ИНДИКАТОРА
      
                               
   }     
//-------------------------------           
  }    

   return(0); 
}
   
//+------------------------------------------------------------------+    
bool NewBar()
{
   static datetime lastbar = 0;
   datetime curbar = Time[0];
   if(lastbar!=curbar)
   {
      lastbar=curbar;
      return (true);
   }
   else
   {
      return(false);
   }

}

         Код №3
          ------


//--- buffers
double ExtMapBuffer1[];
//--- for one bar
datetime Last,New;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,ExtMapBuffer1);
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    New=Time[0]; 
      
     if(Last!=New)     
   {
  
  int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;
//----
   for(int i=0;i<limit;i++)
//-------------------------------      

   { 

       Код №4
       ------


int start()
  {
      if(last>=Time[0]) return;
  
    int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;
//----
   for(int i=0;i<limit;i++)
       
//-------------------------------      
   { 
   
              
      КОД ИНДИКАТОРА
      
                               
        
//-------------------------------              
       
      last=Time[0];      
   } 
//----
   return(0);
  }
//+------------------------------------------------------------------+

上部のSRC ボタンでコードを貼り付けて くださいそんなことをしても、誰もつっこんでくれませんよ。貼り付けておきました。投稿でも同じことができます。