[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 832

 
Vinin:

次回は何が変わるのでしょうか?
同じことです。ポジションがクローズされる - 保留注文が設定される、など。最後の値を返す関数(例:OrderCloseTime())がある。ティックごとに、最後に閉じたポジション(例えばポジション#1)の時間値を取得します。新しいティックで次のポジション(ポジション#2)を閉じるとき、私はこの(#2)ポジションを閉じるための時間を取得します。OrderCloseTime()の値が相対的に変更された。といった具合に。変数がどう変化したとか、どうでもいいんです。私にとって重要なのは、変数が変わったという事実そのものなのです。最後に閉じたポジションのOrderCloseTime()が、その次のポジションのOrderCloseTime()よりも大きければ、BLA-BLA-BLAとする、という論理演算の ようなものです。また、-もし最後のクローズポジションのOrderClosePrice()が最後のポジションのOrderClosePrice()と等しくない場合は、BLA-BLA-BLAを作成します。それとも、そのような比較はできないのでしょうか?
 
ここで質問です。例えば、私たちのEAが、ある指標(例えば私はCCIを取りました)が下から上にあるレベル(赤い線)を越えたら買いシグナルを表示し、それぞれ、下がったら売りシグナルを表示するとします。バーAの形成中に一度だけ注文を開くようにするにはどうしたらよいでしょうか。Aのバーが形成されている間に、指標はレベル(赤い線)を何度も下向きと上向きに交差したとします。すでに述べたように、注文は一度だけ開けるようにすべきです。

必要なのは、バーD(チャート上の状況2)で受信する売りシグナルが、バーAで開いた注文を決済せず、何 ら影響を受けないようにすることです。

すなわち、注文が開かれた後、Expert Advisorによって制御されることはありません。


よろしくお願いします。

 

EAにSequent Demarqueのコードの一部を添付するのを手伝ってくださいhttps://www.mql5.com/ru/code/7372

はこのように動作しません。

num=0とする。

for(i=bars; i>=0; i--)
{
if ((iClose(NULL,PERIOD_M5,i+1)<iClose(NULL,PERIOD_M5,i+4) && num!=0 )){
num++です。


if ((iClose(NULL,PERIOD_M5,i+1)<iClose(NULL,PERIOD_M5,i+4)))。
を買う............。

if (num==9)
を閉じる............。

 
Vinin:


1.最初のタイプの注文数を数える

2.タイプ2の注文数をカウントする

3.結果を比較する


ビニンさんへありがとうございました。
 
Forrim:
ここで質問です。EAの買いシグナルは、インジケーター(例えばCCIを取りました)があるレベル(赤い線)を下から上に越えたときに、売りシグナルは上から下に越えたときに、それぞれ表示されるとします。バーAの形成中に一度だけ注文を開くようにするにはどうしたらよいでしょうか。Aのバーが形成されている間に、指標はレベル(赤い線)を何度も下向きと上向きに交差したとします。すでに述べたように、注文は一度しか開けないようにすべきです。 。

これは、バーD(チャート上の状況2)で受け取る売りシグナルでは、バーAで開いた注文を閉じず、いかなる影響 も受けないようにする必要があります。

つまり、注文が開かれた後、EAによって制御されることはないのです。


ありがとうございました。

実は、CCIは乱高下するので、バーが閉店して新しいバーがオープンしてから確認した方がいいんです。

ローソク足の開始時刻が異なるか(異なれば注文が開く)、同じか(=>注文が開かない)をチェックしたい場合、各クロスで開始時刻をグローバル変数 に格納する必要があります。

 
Forrim:
ここで質問です。例えば、私たちのEAが、ある指標(例えば私はCCIを取りました)が下から上にあるレベル(赤い線)を越えたら買いシグナルを表示し、それぞれ、下がったら売りシグナルを表示するとします。バーAの形成中に一度だけ注文を開くようにするにはどうしたらよいでしょうか。Aのバーが形成されている間に、指標はレベル(赤い線)を何度も下向きと上向きに交差したとします。すでに述べたように、注文は一度しか開けないようにするべきだ。

必要なのは、バーD(チャート上の状況2)で受信する売りシグナルが、バーAで開いた注文を決済せず、何 ら影響を受けないようにすることです。

すなわち、注文が開かれた後、Expert Advisorによって制御されることはありません。


よろしくお願いします。

このタイプのポジションが既に開いている場合は、それ以上開かないようにしてください。
 
//--------------------------------------------------------------- 1 --
                                   // Численные значения для М15
extern double StopLoss   =20;      // SL для открываемого ордера
extern double TakeProfit =20;      // ТР для открываемого ордера
extern double Step_Sar=0.02;       // Шаг Sar
extern double Maximum_Sar=0.2;     // Максимум Sar
extern double Lot=0.01;            // Жестко заданное колич. лотов
bool Work=true;                    // Эксперт будет работать.
//--------------------------------------------------------------- 2 --
int start()
  { 
   int   
   Total,                           // Количество ордеров в окне 

   Ticket;                          // Номер ордера
   
   double
   Sar_1 ,                          // Значен. Sar текущее
   Sar_0 ,                          // Значение Sar предыдущей свечки      
   Price,                           // Цена ордера
   SL,                              // SL ордера 
   TP;                              // TP ордера
   
   bool
   Ans  =false,                     // Ответ сервера после закрытия
   Cls_B=false,                     // Критерий для закрытия  Buy
   Cls_S=false,                     // Критерий для закрытия  Sell
   Opn_B=false,                     // Критерий для открытия  Buy
   Opn_S=false;                     // Критерий для открытия  Sell
   
//--------------------------------------------------------------- 3 --   
   // Учёт ордеров   

   Total=0;                                     // Количество ордеров
   for(int i=1; i<=OrdersTotal(); i++)          // Цикл перебора ордер
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
        {                                       // Анализ ордеров:
         if (OrderSymbol()!=Symbol())continue;      // Не наш фин. инструм
         if (OrderType()>1)                     // Попался отложенный
           {
            Alert("Обнаружен отложенный ордер. Эксперт не работает.");
            return;                             // Выход из start()
           }
         Total++;                               // Счётчик рыночн. орд
         if (Total>1)                           // Не более одного орд
           {
            Alert("Несколько рыночных ордеров. Эксперт не работает.");
            return;                             // Выход из start()
           }

   
     
       
        
    
         
         Price =OrderOpenPrice();               // Цена выбранн. орд.
         SL    =OrderStopLoss();                // SL выбранного орд.
         TP    =OrderTakeProfit();              // TP выбранного орд.
         Lot   =OrderLots();                    // Количество лотов
         }
         }
   
//--------------------------------------------------------------- 6 --
   // Торговые критерии
   Sar_1=iSAR(NULL, 0, 0.02, 0.2, 1);           // Sar_1
   Sar_0=iSAR(NULL, 0, 0.02, 0.2, 0);           // Sar_0
 
   if (Sar_0 > Price && Sar_1 < Price)          // если Sar меняет положение
     {
      Opn_B=true;                               // Критерий откр. Buy             
     }  
   if (Sar_0 < Price && Sar_1 > Price)          // если Sar меняет положение
     {                                          
      Opn_S=true;                               // Критерий откр. Sell                                   
     }   
//--------------------------------------------------------------- 7 --
  
     {
      if (Opn_B==true)         
        {                                       // критерий откр. Buy
         RefreshRates();                        // Обновление данных
         SL=(20+Ask-Bid)*Bid;                 // Вычисление SL откр.
         TP=20*Bid;                           // Вычисление TP откр.
         Alert("Попытка открыть Buy. Ожидание ответа..");
         Ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,0,SL,TP);//Открытие Buy                         
        }
        if (Fun_Error(GetLastError())==1)      // Обработка ошибок
                                   
         return;                                // Выход из start()
        
        
      if (Opn_S==true)                          // критерий откр. Sell
      
        {                                       // критерий откр. Sell
         RefreshRates();                        // Обновление данных
         SL=(20+Ask-Bid)*Ask;                 // Вычисление SL откр.
         TP=20*Ask;                           // Вычисление TP откр.
         Alert("Попытка открыть Sell. Ожидание ответа..");
         Ticket=OrderSend(Symbol(),OP_SELL,Lot,Bid,0,SL,TP);//Открытие Sel
         
         return;                                // Выход из start()
        }
        
      if (Fun_Error(GetLastError())==1)      // Обработка ошибок
                      
         return;                                // Выход из start()
        
     }
//--------------------------------------------------------------- 9 --
   return;                                      // Выход из start()
  }
//-------------------------------------------------------------- 10 --
int Fun_Error(int Error)                        // Ф-ия обработ ошибок
  {
   switch(Error)
     {                                          // Преодолимые ошибки            
      case  4: Alert("Торговый сервер занят. Пробуем ещё раз..");
         Sleep(3000);                           // Простое решение
         return(1);                             // Выход из функции
      case 135:Alert("Цена изменилась. Пробуем ещё раз..");
         RefreshRates();                        // Обновим данные
         return(1);                             // Выход из функции
      case 136:Alert("Нет цен. Ждём новый тик..");
         while(RefreshRates()==false)           // До нового тика
            Sleep(1);                           // Задержка в цикле
         return(1);                             // Выход из функции
      case 137:Alert("Брокер занят. Пробуем ещё раз..");
         Sleep(3000);                           // Простое решение
         return(1);                             // Выход из функции
      case 146:Alert("Подсистема торговли занята. Пробуем ещё..");
         Sleep(500);                            // Простое решение
         return(1);                             // Выход из функции
         // Критические ошибки
      case  2: Alert("Общая ошибка.");
         return(0);                             // Выход из функции
      case  5: Alert("Старая версия терминала.");
         Work=false;                            // Больше не работать
         return(0);                             // Выход из функции
      case 64: Alert("Счет заблокирован.");
         Work=false;                            // Больше не работать
         return(0);                             // Выход из функции
      case 133:Alert("Торговля запрещена.");
         return(0);                             // Выход из функции
      case 134:Alert("Недостаточно денег для совершения операции.");
         return(0);                             // Выход из функции
      default: Alert("Возникла ошибка ",Error); // Другие варианты   
         return(0);                             // Выход из функции
     }
  }
//-------------------------------------------------------------- 11 --

初歩的なEAで、パラボリックSARのインジケータが価格チャートと相対的に変化したときにポジションを開く必要があり、M15で動作します。

現在のローソク足と直前のローソク足の指標位置を比較するEAです。

コンパイル中にエラーやバグがない、タブでテストでは "結果" "グラフ" "レポート "は空ですが、ログではこのです: "画像"。

私は2日目にコーディングをしています。私は今までコーディングしたことがありません。行き詰っています、可能なら助けてください。


 

T.H.C. やってみる




ファイル:
0000001_1.mq4  3 kb
 
Techno:

T.H.C. これを試してみてください。




本当にありがとうございます。こんなに早い対応で、こんなにコードが変わるとは思ってもいませんでした。

基本的なmql以外のプログラミングの本についてアドバイスをお願いします。

 
T.H.C.:

ありがとうございました。これほどのスピードとコードの変化は予想していませんでした。

基本的なmqlの他に、プログラミングの本をもっと教えてください。

ベースの方しか読んでないから、もっと練習しないとダメでしょ。