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

 
必要であれば、jmaも掲載します。インジケータ名をJMA[i]に変更
ファイル:
jmaxvib.mq4  11 kb
 
for(i = 0; i < limit; i++)
     {
       if(dBuffer[i+1]>80 && dBuffer[i]<80) DN[i] = 70; Fd=-1; Fu=0;               //пересекла 80   --> 1
       if(dBuffer[i+1]<20 && dBuffer[i]>20) UP[i] = 30; Fu=1;  Fd=0;               //пересекла 20   --> 1
       
       if(dBuffer[i+1]>rsi[i+1] && dBuffer[i]<rsi[i]) dn[i] = 60; fd=-1; fu=0;     //пересечение двух  -->  2
       if(dBuffer[i+1]<rsi[i+1] && dBuffer[i]>rsi[i]) up[i] = 40; fu=1;  fd=0;     //пересечение двух     -->  2
       
       if(Fd==-1 && fd==-1) dot[i]=90; Fd=0; Fu=0; fd=0; fu=0;
       if(Fu==1 && fu==1)   dot[i]=10; Fd=0; Fu=0; fd=0; fu=0;

現在の時間 から過去の時間まで、バーを通過しているのです。

配列は最後の1つまで検索されます。

したがって、すべての変数は最新の場合(この場合、ずっと前)の値を与える。

したがって、過去から現在までのルックアップを行う必要があります。

for(i = limit; i >= 0; i--)
そして、変数
int fd, fu,Fd, Fu;

はトップレベル、つまりStartとInitの前に宣言します。

また、Start時にゼロにする必要はありません。ゼロにしたところだけゼロにする

if(Fd==-1 && fd==-1) dot[i]=90; Fd=0; Fu=0; fd=0; fu=0;
       if(Fu==1 && fu==1)   dot[i]=10; Fd=0; Fu=0; fd=0; fu=0;
 
rlx ありがとうございます 、Vceは動いています
 
PapaYozh:


まず、OrderSend()はそこで2回発生し、2回とも指定した条件から外れています。

次に、正規化されていない価格がOrderSend()に渡されます。

第三に、OrderSend()関数が返す結果を分析し、注文を開く/変更する/閉じる時にエラーが発生した場合、ログにメッセージを書き、ログを分析することです。


どなたか、Experrement 1の修正版を掲載していただけませんか?
 

こんにちは。

お返事ありがとうございました - とても助かりました )))

みんな!エキスパートアドバイザーは、2つのミューウィングが 交差したときに取引を行います。そして、それらがクロスバックすると、トレードをクローズし、反対方向にオープンして利益を失う。

1.ラインが収束し始めたばかりなのに、案件をクローズするとどう書けばいいのか。そして、それは同じ方向に新しい取引を開くのではなく、彼らが反対方向に交差するまで待っていたのでしょうか?

2. あるいは、R.C.I.が買いで80レベルを下方に、売りで20レベルを下方にクロスしたときに取引を終了する。そして取引を終了するとき、条件が満たされると、同じ方向の取引を開始せず、反対方向にクロスするのを待つのか。

フォーラムで似たようなスレッドがあれば、リンクをお願いします

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

いいトレードをしましょう!

儲かるトレード!

 

皆さん、こんにちは。

この意味を教えてください。

買い注文......失敗 [取引タイムアウト]。

具体的には、このタイムアウトが何であるかに興味がある

 
smartemiy:

こんにちは。

お返事ありがとうございました - とても助かりました )))

みんな!エキスパートアドバイザーは、2つのミューウィングが交差したときに取引を行います。そして、それらがクロスバックすると、トレードをクローズし、反対方向にオープンして利益を失う。

1.ラインが収束し始めたばかりなのに、案件をクローズするとどう書けばいいのか。そして、それは同じ方向に新しい取引を開くのではなく、彼らが反対方向に交差するまで待っていたのでしょうか?

2. あるいは、R.C.I.が買いで80レベルを下方に、売りで20レベルを下方にクロスしたときに取引を終了する。そして取引を終了するとき、条件が満たされると、同じ方向の取引を開始せず、反対方向にクロスするのを待つのか。

フォーラムで似たようなスレッドがあれば、リンクをお願いします

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

いいトレードをしましょう!

儲かるトレード!


https://www.mql5.com/ru/code 倉庫に似たようなものがいっぱいある
 
もう一つの質問ですが、ツールポイントあたりのコストを引き出すには、どのような関数を使用すればよいのでしょうか?
 
PapaYozh:


まず、OrderSend()はそこで2回発生し、2回とも指定した条件の範囲外です。

ただし、面倒なことはしたくない。

if(OrdersTotal()>0&&tral>0&&OrderMagicNumber()==MAGIC&&(OrderType()==OP_SELL||OrderType()==OP_BUY)){
     if(ObjectFind(NamePrice)==-1)
      {
        ObjectCreate(NamePrice,OBJ_HLINE,0,0,Ask);
        ObjectSet(NamePrice,OBJPROP_COLOR,LineColor);
      }
      double n= ObjectGet( NamePrice, OBJPROP_PRICE1); 
      double p1= ObjectGet( NamePrice1, OBJPROP_PRICE1);
      double p2= ObjectGet( NamePrice2, OBJPROP_PRICE1);
//....................................................................... 
      double d= AccountEquity()-AccountBalance();                 
       if(ObjectFind(NamePrice1)==-1&&d>0)
      {       
        ObjectCreate(NamePrice1,OBJ_HLINE,0,0,n+d*Point*10);
        ObjectSet(NamePrice1,OBJPROP_COLOR,LineColor1);
      }
      if(n+d*Point*10>p1)ObjectSet(NamePrice1,OBJPROP_PRICE1,n+d*Point*10);
      if(ObjectFind(NamePrice2)==-1&&n+d*Point*10<p1)
      {       
        ObjectCreate(NamePrice2,OBJ_HLINE,0,0,n+d*Point*10);
        ObjectSet(NamePrice2,OBJPROP_COLOR,LineColor2);
      } 
      if(p2!=n+d*Point*10)ObjectSet(NamePrice2,OBJPROP_PRICE1,n+d*Point*10);  
      if(nb+ns==2&&tral<20&&p1-p2>=(p1-n)/tral&&p2>n&&p2-n>dohod*Point/10)CloseALL(); 
      if(nb+ns==2&&tral>20&&p1-p2>=tral*Point&&p2>n)CloseALL();  
      }
//..........................................................................
    if(ob==0||OrderOpenTime()<iTime(Symbol(),TF,0))
       { 
     
      if( R==1&&zb==0&&C1>O1&&iVolume(Symbol(),TF,0)<2)
         {
         if(ob==0||OrderOpenTime()<iTime(Symbol(),TF,0))
         {
         OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+dist*Point,3,0,0,"ko",MAGIC,TimeCurrent()+60*experation,Green);
         }
         }
      
      }
    if(os==0||OrderOpenTime()<iTime(Symbol(),TF,0))
        {      
      if(R==1&&zs==0&&C1<O1&&iVolume(Symbol(),TF,0)<2)
        {        
         if(os==0||OrderOpenTime()<iTime(Symbol(),TF,0))
         {
         OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-dist*Point,3,0,0,"ko",MAGIC,TimeCurrent()+60*experation,Red);
         }
         }
      return(0);
     }
   

   
  }

OrderTotal() がゼロの場合、どのように注文が開かれるのか説明してください。

ありがとうございます。

 

EAを1時間に1回しか取引しないようにするには、どのようなコードをEAに記述すればよいか教えてください。

例えば、EAがトリガーされ、注文が開かれ(それ以上には興味がない)、私は1時間のタイムフレームで現在のバーで注文を開かないようにしたい。

こんな感じ

int hh;
int CurrentHour;
CurrentHour=TimeHour(TimeCurrent());
if (CurrentHour!=hh)
{
OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-3*Point,Bid+3*Point);
hh=TimeHour(TimeCurrent());
} (CurrentHour!=hh)、(Bid.ht!=ht!=ht!=ht!)、(Bid.ht!=Ht!=Ht!=Ht!=Ht!)。

しかし、数え切れないほどの注文が ある。