[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 597

 

皆さん、こんにちは。

フラクタル形成後の最高値を 調べる方法を教えてください。

 

ここでは、ポジションをオープンする取引機能を紹介します。

//+-------------------------------------------------------------------------------------+
//| Открытие позиций                                                                    |
//+-------------------------------------------------------------------------------------+
bool Trade (int signal)
{
  double sl = 0, tp = 0;

  if(signal == SIGNAL_BUY && FindOrders() == 0)                                     // Если сигнал на покупку и открытых ордеров нет...
  {
    g_ticket = OpenBuy();                                                           // открываем лимитный ордер на покупку
  
    if(g_ticket > 0 && OrderSelect(g_ticket,SELECT_BY_TICKET,MODE_TRADES) == true)  // Если ордер есть и он выбран..
    {
      if(i_sl != 0)                                                                 // Если входной параметр стоп-лосса не равен 0, то..
        sl = NormalizeDouble(OrderOpenPrice() - i_sl*Point,Digits);                 // Получаем значение стоп-лосса для выбранного ордера
      if(i_tp != 0)                                                                 // Если входной параметр тейкпрофита не равен 0, то..
        tp = NormalizeDouble(OrderOpenPrice() + i_tp*Point,Digits);                 // Получаем значение тейкпрофита для выбранного ордера
    }  
  }  
  else if(signal == SIGNAL_SELL && FindOrders() == 0)                               // Если сигнал на продажу и открытых ордеров нет..
  {
    g_ticket = OpenSell();                                                          // Открываем лимитный ордер на продажу
  
    if(g_ticket > 0 && OrderSelect(g_ticket,SELECT_BY_TICKET,MODE_TRADES) == true)  // Если ордер есть и он выбран..
    {
      if(i_sl != 0)                                                                 // Если входной параметр стоп-лосса не равен 0, то..
         sl = NormalizeDouble(OrderOpenPrice() + i_sl*Point,Digits);                // Получаем значение стоп-лосса для выбранного ордера
      if(i_tp != 0)                                                                 // Если входной параметр тейкпрофита не равен 0, то..
         tp = NormalizeDouble(OrderOpenPrice() - i_tp*Point,Digits);                // Получаем значение тейкпрофита для выбранного ордера
    }
  }
  if(sl != 0 || tp != 0)                                                            // Если полученные значения sl и tp не равныы 0, то..
  {
    OrderModify(g_ticket,OrderOpenPrice(),sl,tp,OrderOpenTime() + 86400,Lime);      // Модифицируем ордер
    return(true);
  }
  return(true);
}

すべてクリアで簡潔。テスターでExpert Advisorは動作するものの、エラー 130が 出続ける。その理由は何でしょうか。

この機能はポジションオープン 機能を使用します。

//+-------------------------------------------------------------------------------------+
//| Открытие длинной позиции                                                            |
//+-------------------------------------------------------------------------------------+
int OpenBuy()
{
  g_ticket = -1;
  string myNote = "сов баянул";
         
  g_ticket = OrderSend(Symbol(),OP_BUYLIMIT,0.1,GetPriceToInput(),3,0,0,myNote,myMagic,0,Blue);
  if(g_ticket > 0 && OrderSelect(g_ticket,SELECT_BY_TICKET,MODE_TRADES) == true)
  
  return(g_ticket);
}
//+-------------------------------------------------------------------------------------+
//| Открытие короткой позиции                                                           |
//+-------------------------------------------------------------------------------------+
int OpenSell()
{
  g_ticket = -1;
  string myNote = "сов шортанул";

  g_ticket = OrderSend(Symbol(),OP_SELLLIMIT,0.1,GetPriceToInput(),3,0,0,myNote,myMagic,0,Red);
  if(g_ticket > 0 && OrderSelect(g_ticket,SELECT_BY_TICKET,MODE_TRADES) == true)
  
  return(g_ticket);
}

ストップレベルと関係があるのかと思い、チェックを入れたが、違うようだ。Alpariではこのレベルは0なので、とりあえず削除しました。このエラーを回避するために修正すべき点をヒントにしてください。

 


 double min=Low[iLowest(NULL,PERIOD_M15,MODE_LOW,32,0)];

例えばEURUSDの場合、1.30320のフォーマットで記録するにはどうしたらいいですか?
 
if(OrderTakeProfit()!=0&&OrderTakeProfit()!=OrderOpenPrice()+2*kio*Point&&Bid>OrderOpenPrice()+50*kio*Point)
               OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),OrderOpenPrice()+2*kio*Point,0);
皆さん、こんにちは。 Error #1 の何が問題なのか、どうすれば直るのか、教えていただけませんか?おつかれさまでした
 
rigonich:

datetime型の変数を宣言し、値Time[0] を代入します。 注文を開いた後、Time[0]と等しくなければ、次の注文を開き、等しければExitしてもよいでしょう。基準としては、コードを見ていませんが、ストキャスティクスであれば、買われすぎ・売られすぎのレベル(通常80%以上、20%未満)でのクロスでトリガーをかけるべきと思われます。わかりやすくするために、ストキャスティクスの設定でレベルを20%と80%に設定します。
リゴニッチ

datetime型の変数を宣言し、その値にTime[0] を代入し、オーダーを開いた後、Time[0と 等しくなければ次のオーダーを開くことができ、等しければ --exit from startとなります。基準としては、コードを見ていませんが、ストキャスティクスであれば、買われすぎ・売られすぎのレベル(通常80%以上、20%未満)でのクロスでトリガーをかけるべきと思われます。わかりやすくするために、ストキャスティックの設定で20%と80%のレベルを設定します。
ありがとうございました)
 
なぜ不必要な注文が出るのか理解できません。(スクリーンショットの赤丸で囲った部分、以下はその基準です。
// Торговые критерии
   M_1=iStochastic(NULL,0,Kperiod,Dperiod,Slowing,MODE_SMMA,Price_field,MODE_MAIN,  0);
   M_2=iStochastic(NULL,0,Kperiod,Dperiod,Slowing,MODE_SMMA,Price_field,MODE_MAIN,  1);
   S_1=iStochastic(NULL,0,Kperiod,Dperiod,Slowing,MODE_SMMA,Price_field,MODE_SIGNAL,0);
   S_2=iStochastic(NULL,0,Kperiod,Dperiod,Slowing,MODE_SMMA,Price_field,MODE_SIGNAL,1);
 
   if (M_2 < S_2 && M_1>=S_1 ) 
      { 
       if (Total==1)
         {
          if (Vremya== Time [0]) 
          return; 
          T=Close_Order (Lts,Tip);
          Vremya= Time [0];
          if (T==true)
           { 
           Total=0;
           }
         } 
       if (Total==0)         
         { 
         if (Vremya== Time [0])  
         return;                                     
   
          Open_Order_B (Lts); 
          Vremya= Time [0];
            
         }                                      
      }
   if (M_2 > S_2 && M_1<=S_1 ) 
      { 
       if (Total==1)
          {
           if (Vremya== Time [0]) 
           return; 
           T=Close_Order (Lts,Tip); 
           Vremya= Time [0];
           if (T==true)
             {
             Total=0;
             }
          }
       if (Total==0)         
          {                                          
          if (Vremya== Time [0]) 
          return;                                     
          
          Open_Order_S (Lts); 
          Vremya= Time [0];                                              
          }
       }   
 
Equilibrium:
不要な注文がなぜ出るのか理解できません。(スクリーンショットでは赤丸で囲まれています。)基準は以下の通りです。

1本と2本のバーから指標値を取ってみてください。こんな感じ。
 
i999i:

皆さん、こんにちは。

フラクタル形成後の最高値を調べる方法を教えてください。


次のトップフラクタル
 

double min=Low[iLowest(NULL,PERIOD_M15,MODE_LOW,32,0)];

こんにちは、アドバイスお願いします。

例えばEURUSDの1.30320はどのように記録するのですか?

 
hoz:

ここでは、ポジションをオープンする取引機能を紹介します。

すべてクリアで簡潔。テスターでExpert Advisorは動作するものの、エラー 130が 出続ける。その理由は何でしょうか。

この機能はポジションオープン機能を使用します。

ストップレベルと関係があるのかと思い、チェックを入れたが、違うようだ。Alpariではこのレベルは0なので、とりあえず削除しました。このエラーを回避するために修正すべき点をヒントにしてください。


GetPriceToInput()関数に尽きると思います。