[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 387

 
biragr:

ご清聴ありがとうございました。任意の日付のラインを設定し、チャートがそのラインに到達するとEAが起動するのですね。あるいは、私が何か理解していないのかもしれませんが、もしよろしければご説明ください。
さて、日足チャートにラインを設定しましたが、時計に設定した場合はどうでしょうか? 注文開始時刻 はラインで設定するのでしょうか、それとも厳密に設定するのでしょうか?行で1ヶ月のスケジュールを設定する必要があるのか、それとも私のリンクに従ったExpert Advisorで十分なのでしょうか?
 
kolyango:

助けて!お願いhttps://www.mql5.com/ru/code/10067 インジケータは、(例として)単純な動作するEAに変換する必要があります。アクションのプリンツィプ。

EAを投入するペアで、値が0.9570になったらすぐに、0.1ロットの売り注文を成行注文で出します(異なるウィンドウのEAが注文を混同しないように)、ストップロス100p、テイクプロフィット200p。

プロフェッショナルの皆さん、あなたなしでは成り立ちません



初心者を助けよう
 

kolyango:

EAを投入するペアで、値が0.9570に等しくなったらすぐに、(異なるウィンドウのEAが注文を混同しないように)メジャー番号で0.1ロットの売り成行注文を出し、ストップロス100p、テイクプロフィット200pとします。

初心者のためのヘルプ!
一回限りのEAを書く意味はあるのでしょうか?ペンディングオーダーを入れれば、思い通りに動きます。そしてメジャーにEAを設定する、ポーズはメジャーがゼロになるからだ。
 
Reshetov:
単発のEAを書く意味はあるのでしょうか?間を置けば、思い通りのトリガーがかかる。そして、ポーズはメジャーがゼロになるので、メジャー用のEAを設定する。

これをインジケーターで作る方法を考えないと...。
 

何が問題なのか問題は、ラインがクロスしたときに必ず注文がオープンするとは限らないこと、つまり、オープンするときとしないときがあることです...。同じ原理で動くとはいえ...。

//+------------------------------------------------------------------+
//|                                                      Вайкофф.mq4 |
//|                                                   Sergey Kodolov |
//|                                              84232676421@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Sergey Kodolov"
#property link      "84232676421@mail.ru"



int total,sum,sumr;  
datetime TimeBarH, TimeBarL;

int Crossed (double nach, double kon, double cenaniz, double cenaverh)
{
   static int last_dir = 0;
   static int cur_dir = 0;
   
   if(nach<cenaverh && kon>cenaverh)cur_dir=1;
   if(nach>cenaniz && kon<cenaniz)cur_dir=2;
   
   if(cur_dir != last_dir)
   {
      last_dir=cur_dir;
      return(last_dir);
   }
   else
      return(0);
}


  
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }

  
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
                     
bool NewBar = New(); //работаем только с нового бара

int volot = volotilnost(NewBar); //определяем волотильность
Hfr(NewBar,volot); //определяем фрактал верхний
Lfr(NewBar,volot); //определяем фрактал нижний

      double BuyLine, SellLine;
   
      BuyLine = ObjectGet("upline",OBJPROP_PRICE1);
      SellLine = ObjectGet("downline",OBJPROP_PRICE1);

int isCrossed = Crossed(Open[0],Bid,SellLine,BuyLine); //говорит о пересечении баром линии
OrderOpenFunction(isCrossed);



//----
   return(0);
  }
//+------------------------------------------------------------------+


bool New()
{
   static datetime lastbar = 0;
   datetime curbar = Time[0];
   //Print("lastbar = ",lastbar," curbar = ",curbar);
   if(lastbar!=curbar)
   {
      lastbar = curbar;
      //Print("ypa");
      return(true);
   }
   else
      return(false);
}

int volotilnost (bool NewBar)
{
   if(NewBar == true)
   {
      for(int i=0;i<=kolbar;i++)
      {
         sum = sum + MathAbs(High[i]-Low[i])*1000;
         //Print(sum);
      }
      sumr = sum/kolbar;
      Print(sumr);
      return(sumr);
   }   
}

void Hfr(bool NewBar, int volot)
{
   if(NewBar == true)
   {
      if(volot > kolbarv)
      {
         if(iHigh(Symbol(),TF,5)<iHigh(Symbol(),TF,4))
         {
            if(iHigh(Symbol(),TF,4)<iHigh(Symbol(),TF,3))
            {
               if(iHigh(Symbol(),TF,2)<iHigh(Symbol(),TF,3))
               {
                  if(iHigh(Symbol(),TF,1)<iHigh(Symbol(),TF,2))
                  {
                     ObjectDelete("upline");
                     ObjectCreate("upline",OBJ_HLINE,0,0,(iHigh(Symbol(),TF,3)));
                     TimeBarH = iTime(Symbol(),TF,3);
                  }
               }
            }
         }
      }   
   }   
}
         

void Lfr(bool NewBar, int volot)
{
   if(NewBar == true)
   {
      if(volot > kolbarv)
      {
         if(iLow(Symbol(),TF,5)>iLow(Symbol(),TF,4))
         {
            if(iLow(Symbol(),TF,4)>iLow(Symbol(),TF,3))
            {
               if(iLow(Symbol(),TF,2)>iLow(Symbol(),TF,3))
               {
                  if(iLow(Symbol(),TF,1)>iLow(Symbol(),TF,2))
                  {
                     ObjectDelete("downline");
                     ObjectCreate("downline",OBJ_HLINE,0,0,(iLow(Symbol(),TF,3)));
                     TimeBarL = iTime(Symbol(),TF,3);
                  }
               }
            }
         }
      }   
   }   
}

void OrderOpenFunction(int isCrossed)
{
   total = OrdersTotal();
   if(total<1)
   {
      if(isCrossed == 1)
      {
         OrderSend(Symbol(),OP_BUY,lots,Ask,slip,Bid-TS*Point,Bid+TP*Point,"Покупка",Magic,0,Green);
      }
      if(isCrossed == 2)
      {
         OrderSend(Symbol(),OP_SELL,lots,Bid,slip,Ask+TS*Point,Ask-TP*Point,"Продажа",Magic,0,Red);
      }
   }   
}
私はエラーがisCrossedにあると思うが、私はそこに見つけることができません...私はコードの一部を削除しました(いくつかのデータを配列に保存する)、それはコードをオーバーロードするので、私はそれを共有することが喜んでされるでしょう。
 
こんばんは!保留中の bylimit注文を 出したら、ストップなし、エラー130!!!!それは何でしょう?それとも、また失敗してしまったのでしょうか?お願いします!アドバイスください。
 

皆さん、こんにちは。

ストキャスティクスの本線とシグナル 線のクロスについて、どのように表現すればよいか教えてください。

 

私の中では、こんな感じ

F=iStochastic( Symbol(), 0, 5, 3, 3, MODE_SMA, 1,MODE_MAIN , 0) ;
   SIGNAL=iStochastic( Symbol(), 0, 5, 3, 3, MODE_SMA, 1,MODE_SIGNAL , 0) ;
   if (F==SIGNAL) {Урра!!!!; }
 

もう一つ質問ですが、なぜプログラムはオブジェクトが存在すると言っているのに、実際には存在しないのでしょうか?

void DrawLines()
{
   ObjectCreate("line1",OBJ_TREND,0,ArrayH[1],iHigh(Symbol(),TF,iBarShift(Symbol(),TF,ArrayH[1])),ArrayH[2],iHigh(Symbol(),TF,iBarShift(Symbol(),TF,ArrayH[2])));
   Print(GetLastError());
}

iBarShift(シンボル(),TF,ArrayH[1])- はバー番号を与えるので、Print()で全て確認しました。しかし、GetLastErrorは エラー4200を出すので、何が何だかわからない =)

 
kolyango:

インジケーターから作る方法を考えないと...。

インジケーターからはできません