[アーカイブ!】アドバイザーの書き方を無料公開中 - ページ 11

 
skylord писал(а)>>

こんにちは。

MQLを学び始めたばかりで、EAを書こうとしているのですが...。

私はsidus v.2指標に基づいてEAを作成しようとしています、私はそれが新しいバーが生まれたときにのみ、EAで指定した方向にポジションを開くようにしたい、すなわち、最初のティックでそれは前のバーで信号があるかどうかをチェックし、どのような注文 - ストップとテイクで、。インジケーターファイルを添付してください。

この信号が見つからない((.

助けてください、せめて方法を教えてください.

Sidusインジケータのエキスパートアドバイザ

もしかしたら、これがあなたの役に立つかもしれないし、検索が役に立つかもしれません。

や第二の風!?

 

vvavva さんに感謝です。いいアイデアがあるのですが、スキップしたり、左の信号が多かったりで、必要なものではありません(

EAから 前のバーのバッファインジケータの状態を要求する方法を誰かに聞きたいのですが、どうすればいいのでしょうか?

if (sigCurrent==1 && sigPrevious==2)
{
ExtMapBuffer4[i-1] = High[i-1]-5*Point;
//ExtMapBuffer3[i] = Ask;
entry=true;
entry_point=Ask;
}
else if (sigCurrent==2 &&)sigPrevious==1)
{
ExtMapBuffer3[i-1] = Low[i-1]-5*Point;
//ExtMapBuffer4[i] = Bid;
entry=true;
entry_point=Bid;

}
EAには以下のように一致条件があります。

double Up;
double Down;
int res;

Up=iCustom(NULL, 0, "sidus_v.2", 3,1);
Down=iCustom(NULL,0, "sidus_v.2")",2,1);
//---- 売り条件
if(Down==Low)
{
res=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"",MAGICMA,0,Red);
return;
}
//---- 買い条件
if(Up==High)
{
res=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,",MAGICMA,0,Blue);
return;
}.

でも、それは間違っている!!!

この場合の対処法をアドバイスしてください・・・。

 

こんにちは。

黙々とトレードしている、4インドック、レジスタンスサポートライン、トレンド、ボチボチと使っている・・・。私は画面上で私の目を壊している、あなたは私が点線(同じで再カット)と 矢印(買い、売り)と歴史の中で同じ矢印に音信号を挿入することができ、助けることができる

ファイル:
zigandzag.mq4  16 kb
 
skylord писал(а)>>

こんにちは。

MQLを学び始めたばかりで、EAを書こうとしているのですが...。

私はsidus v.2指標に基づいてEAを作成しようとしています、私はそれが新しいバーが生まれたときにのみ、EAで指定した方向にポジションを開くようにしたい、すなわち、最初のティックでそれは前のバーで信号があるかどうかをチェックし、どのような注文 - ストップとテイクで、。インジケーターファイルを添付してください。

この信号が見つからない((.

助けてください、せめて方法を教えてください.

こんにちは、ただ私の目でコードを走らせただけです、下手くそですみません、もちろん間違っているかもしれませんが、インジケータはオーバードローになるのでしょうか?論理的な思考を心がけよう

for(int i=0; i<limit; i++)
   {

ゼロバーから履歴のすべてのバーまでカウントし、カウンターを増やします。

ExtMapBuffer1[ i]=iMA(NULL,0, FastEMA,0,MODE_EMA,PRICE_CLOSE, i);
     ExtMapBuffer2[ i]=iMA(NULL,0, SlowEMA,0,MODE_EMA,PRICE_CLOSE, i);
     rsi_sig = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, i);

ここですべてが明らかになります。

pipdiffCurrent=(ExtMapBuffer1[i]-ExtMapBuffer2[i]);

マクダックはくたばれ

if ( pipdiffCurrent>0 && rsi_sig>50) 
     {
       sigCurrent = 1;  //Up
     }
     else if ( pipdiffCurrent<0 && rsi_sig<50)
     {
       sigCurrent = 2;  //Down

macdacが0より大きく、RSIが50より大きい場合、sigは1、小さい場合、2となる

ここまではいいんです。

if (sigCurrent==1 && sigPrevious==2)
     {

macdakがプラスでRSIが50より大きい場合とmacdakがマイナスでRSIが50より小さい場合の両方が理解できません。以下のコードに条件があるので

sigPrevious=sigCurrent;

であれば、それを同一視することができる...

とか、未来を盗むのは悪いことだ・・・とか。

ExtMapBuffer3[i-1]

いや、もう理屈はわかっているのだから、これに置き換えて、いや、完全に改造してしまおう。

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
#property indicator_width1 1
#property indicator_width2 1
//----
extern int       FastEMA=14;
extern int       SlowEMA=21;
extern int       RSIPeriod=17;
//----
double BuyBuffer[], SellBuffer[];
int pre_signal = 0;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
     
//----
      SetIndexBuffer(0, BuyBuffer);
      SetIndexLabel(0, "Buy");
      SetIndexStyle(0, DRAW_ARROW, STYLE_SOLID, 1);
      SetIndexArrow(0, 241);
//----
      SetIndexBuffer(1, SellBuffer);
      SetIndexLabel(1, "Sell");
      SetIndexStyle(1, DRAW_ARROW, STYLE_SOLID, 1);
      SetIndexArrow(1, 242);
//----
      return(0);
  }

int deinit()
  {
      
  }

int start()
  {
  

      int counted_bars = IndicatorCounted();

      
   int limit = Bars - 17;

   if( counted_bars > 17) 
     { 
       limit = Bars - counted_bars; 
     }

      for(int i = limit; i >= 0; i --)
        {
             BuyBuffer[ i] = EMPTY_VALUE;
             SellBuffer[ i] = EMPTY_VALUE;      
             
                
                 double a = iMA(NULL,0, FastEMA,0,MODE_EMA,PRICE_CLOSE, i+1);
                 double s = iMA(NULL,0, SlowEMA,0,MODE_EMA,PRICE_CLOSE, i+1);
                 
                
                
                 double a1 = iMA(NULL,0, FastEMA,0,MODE_EMA,PRICE_CLOSE, i);
                 double s1 = iMA(NULL,0, SlowEMA,0,MODE_EMA,PRICE_CLOSE, i);
                 double d1 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, i)-50;
             //----
           if( a< s && a1> s1 && d1>0)
               {
                    BuyBuffer[ i] = Low[ i] - iATR(NULL, 0, 14, i);
                    
               }
             if( a> s && a1< s1 && d1<0)
               {
                    SellBuffer[ i] = High[ i] + iATR(NULL, 0, 14, i);         
                    
               }
        
      
        }
      return(0);
  }

さあ、見てください、悲しい写真です。 比べてみてください。

私はもちろん間違っているかもしれませんし、インジケータが再描画されませんが、私を許して、そして多分あなたはそれがあるべきバー上に信号が表示されるように、始値(特にRSIで)ではなく、終値を使用することができます =(。

 

お気遣いありがとうございますvtoroe_dyxanie))))私が書いたわけではないので、私の観測に従ってインジケータが再描画されるわけではありません。すでにロックされている次のバーの最初のティックから使っています。そのため、最初のティックで前のバーに何があったかを知る必要があるのです。そして、なぜ未来を盗むのか?あるティックで、そのような一致があれば、sigCurrentに1を代入し、変数sigPreviousの最後に、同じsigCurrentを代入しているようです。

sigPrevious=sigCurrent;

そして,次のティックでsigCurrent がすでに 2 で,かつ sigPrevious 変数が自然にバッファを 1 で 埋めていれば,その時点で終了します。

if (sigCurrent==1 && sigPrevious==2)
{
ExtMapBuffer4[i-1] = High[i-1]-5*Point;
//ExtMapBuffer3[i] = Ask;
entry=true;
entry_point=Ask;
}

そして、これについては

ExtMapBuffer3[i-1]

自分でもよくわからないのですが...。

でも、シグナルが表示されたバーに矢印が描かれるのは、問題ないようです

しかし、-1を外すと、たくさんの驚きが現れました(
)



 
skylord >> :

お気遣いありがとうございますvtoroe_dyxanie))))私が書いたわけではないので、私の観測に従ってインジケータが再描画されるわけではありません。すでにロックされている次のバーの最初のティックから使っています。そのため、最初のティックで前のバーに何があったかを知る必要があるのです。そして、なぜ未来を盗むのか?あるティックで、そのような一致があれば、sigCurrentに1を代入し、変数sigPreviousの最後に、同じsigCurrentを代入しているようです。

sigPrevious=sigCurrent;

そして,次のティックでsigCurrent がすでに 2 で,かつ sigPrevious 変数が自然にバッファを 1 で 埋めていれば,その時点で終了します。

if (sigCurrent==1 && sigPrevious==2)
{
ExtMapBuffer4[i-1] = High[i-1]-5*Point;
//ExtMapBuffer3[i] = Ask;
entry=true;
entry_point=Ask;
}

そして、これについては

ExtMapBuffer3[i-1]

自分でもよくわからないのですが...。

でも、シグナルが表示されたバーに矢印が描かれるのは、問題ないようです

しかし、-1を外すと、いろいろな驚きがありました(
)。



しかし、もう一つ副作用があります。条件が揃うと、シグナルは出るが矢印が出ないこともある。しかし、再びチャートに置くと、すべての矢印が元の場所に戻ってしまうのです。もう一度チャート上でコンパイルさせたり、バッファを更新させる方法はないでしょうか?

 
skylord писал(а)>>

なぜ、未来を盗むのか?そのような一致があれば、与えられたtickでsigCurrentに1つ割り当てられ、最後にsigPrevious変数に同じsigCurrentが割り当てられるようです。

sigPrevious=sigCurrent;

そして,次のティックでsigCurrent がすでに 2 で,かつ sigPrevious 変数が自然にバッファを 1 で 埋めていれば,その時点で終了します。

if (sigCurrent==1 && sigPrevious==2)
{
ExtMapBuffer4[i-1] = High[i-1]-5*Point;
//ExtMapBuffer3[i] = Ask;
entry=true;
entry_point=Ask;
}



あなたの本当の、不注意な私...。

についてです。" 既に確定している次のバーの最初のティックから使用しています。そのため、最初のティックで前のバーの状態を知る必要があるのです。" と、本当に使えるのか疑問です。

doubleiCustom() ....intシフト)

全知全能の助けはこう言う

シフト - 指標バッファから取得した値のインデックス(現在のバーから指定した期間だけ後ろにずらす)。

こんな風に書けるのかなぁ(自分でも不思議です)

for (i=0; i<limit;i++){。

if (iCustom(NULL, 0, "sidus_v.2", 3, i+1)<0 && iCustom(NULL, 0, "sidus_v.2", 3,i)>0)

....

なぜなら、ワイズフォーラムのユーザーは、私のスキルを自分で向上させるために残された2つのnubisを見下すことはほとんどありません、それは便利かもしれないためです。

 
vtoroe_dyxanie писал(а)>>

本当だ、不注意だ...。

についてです。"すでにロックされている次のバーの最初のティックから使用します。そのため、最初のティックで前のバーの状態を知る必要があるのです。" と、本当に使えないのだろうかと思います。

doubleiCustom() ....intシフト)

全知全能のリファレンスによると

シフト - 指標バッファから取得した値のインデックス(現在のバーから指定した期間だけ後ろにずらす)。

こんな風に書けるのかなぁ(自分でも不思議です)

for (i=0; i<limit;i++){。

if (iCustom(NULL, 0, "sidus_v.2", 3,1)<0 && iCustom(NULL, 0, "sidus_v.2", 3,0)>0)。

....

ooooooveryワイズフォーラムの参加者は、2人のヌビを見下すことはまずなく、自分たちでスキルを向上させ、それが役に立つかもしれないからです。

いいえ、できません =(

うん、じゃあ、この問題を解決するにはどうしたらいいんだろう?まあ、すでに話題になったので、https://www.mql5.com/ru/forum/117268 私たちはそれを見守ることにします =)

 
vtoroe_dyxanie писал(а)>>

できない =(

人間、ではこの問題をどう解決するのか?さて、すでに「EAから方向を知る方法」というスレッドが立っていますので、注目したいと思います =)。

>> 会社のためにトラッキングをしよう!?)

 
vtoroe_dyxanie писал(а)>>

できない =(

人間、ではこの問題をどう解決するのか?さて、すでに「EAから方向性を知る方法」というスレッドが立っていますので、注目したいと思います =)。

>>おい!私はあなたに助けを求めたことを覚えていますか?難しいことでなければ、あなたは私にもっと教えてもらえますか? あなたが私のためにやったことは、私が今書いたものです(私は一つのウィンドウで最も近いタイムフレームを表示するようにインディケータをしたかった)これは、何ですか?

ファイル:
test1.mq4  6 kb