MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 236

 
Yaroslav Nykula:

...USDが存在するすべての通貨ペア ...

取引資金から使用する証拠金の計算がコードに含まれていると思われます。米ドル以外の通貨で口座を開設してみて、テストが成功するかどうか確認してみてください。
 
<br /> translate="no">。

コード内に取引資金から使用する証拠金の計算があると推測されます。USD以外の通貨で口座を開設してみて、テストが成功するかどうか確認してください。



コードに「取引資金から使用した証拠金」の計算がない・・・。で、最初の投稿の 最後に、"テスターで預金通貨 表示を切り替えても問題は解決しない "と書きました。

 
Yaroslav Nykula:

コードに「取引資金から使用した証拠金」の計算がない・・・。で、最初の投稿の 最後に「テスターで入金通貨の 種類を切り替えても問題は解決しない」と記しました。

それなら、私のテレパシー能力は終わりだ--コードを並べろ。

 

質問で申し訳ないのですが、バッファを使ってEAに外部インジケータを挿入する方法は知っているのですが・・・。しかし、このインジケータにはバッファがありません、どうすれば上値と下値を取得できるのでしょうか?




//+------------------------------------------------------------------+

//|                                                trendlinesDay.mq4 |

//|                      Copyright © 2008, MetaQuotes Software Corp. |

//|                                        https://www.metaquotes.net |

//+------------------------------------------------------------------+

#property copyright "nsi2000"

#property link      "http://www.expert-mt4.nm.ru"

//----

#property indicator_chart_window

//---- input parameters

extern int nPeriod=10;

extern int Limit=350;

   double Up[];

   double Dn[];

///---- int Widners Oscilator

int cnt,nCurBar=0;

//+------------------------------------------------------------------+

//| Custom indicator initialization function                         |

//+------------------------------------------------------------------+

int init()

  {      

//---- Output in Char

   for(cnt=0; cnt<=5; cnt++)

     {

      ObjectCreate("WSO-"+cnt,OBJ_HLINE,0,0,0);

      ObjectSet("WSO-"+cnt,OBJPROP_COLOR,Red);

      if(cnt<5)

        {

         ObjectCreate("Trend DN-"+cnt,OBJ_TREND,0,0,0,0,0);

         ObjectSet("Trend DN-"+cnt,OBJPROP_COLOR,Magenta);

        }

      //----

      ObjectCreate("WRO-"+cnt,OBJ_HLINE,0,0,0);

      ObjectSet("WRO-"+cnt,OBJPROP_COLOR,Blue);

      if(cnt<5)

        {

         ObjectCreate("Trend UP-"+cnt,OBJ_TREND,0,0,0,0,0);

         ObjectSet("Trend Up-"+cnt,OBJPROP_COLOR,Aqua);

        }

     }

//----

   return(0);

  }

//+------------------------------------------------------------------+

//| Custor indicator deinitialization function                       |

//+------------------------------------------------------------------+

int deinit()

  {

//---- TODO: add your code here

   for(cnt=0; cnt<=5; cnt++)

     {

      ObjectDelete("Trend UP-"+cnt);

      ObjectDelete("Trend DN-"+cnt);

      ObjectDelete("WSO-"+cnt);

      ObjectDelete("WRO-"+cnt);

     }

//----

   return(0);

  }

//+------------------------------------------------------------------+

//| Custom indicator iteration function                              |

//+------------------------------------------------------------------+

int start()

  {

//---- TODO: add your code here


   double r1,r2,r3,r4,r5,r6;

   int rt1,rt2,rt3,rt4,rt5,rt6;

   double s1,s2,s3,s4,s5,s6;

   int st1,st2,st3,st4,st5,st6;


//---- Линии сопротивления и поддержки

   if(Bars<Limit) Limit=Bars-nPeriod;

   for(nCurBar=Limit; nCurBar>0; nCurBar--)

     {

      if(Low[nCurBar+(nPeriod-1)/2]==Low[Lowest(NULL,0,MODE_LOW,nPeriod,nCurBar)])

        {

         s6=s5; s5=s4; s4=s3; s3=s2; s2=s1; s1=Low[nCurBar+(nPeriod-1)/2];

         st6=st5; st5=st4; st4=st3; st3=st2; st2=st1; st1=nCurBar+(nPeriod-1)/2;

        }

      if(High[nCurBar+(nPeriod-1)/2]==High[Highest(NULL,0,MODE_HIGH,nPeriod,nCurBar)])

        {

         r6=r5; r5=r4; r4=r3; r3=r2; r2=r1; r1=High[nCurBar+(nPeriod-1)/2];

         rt6=rt5; rt5=rt4; rt4=rt3; rt3=rt2; rt2=rt1; rt1=nCurBar+(nPeriod-1)/2;

        }

     }

//---- Move Object in Chart


   ObjectMove("Trend DN-0",1,Time[st1],s1);

   ObjectMove("Trend DN-0",0,Time[st2],s2);


//----

   ObjectMove("Trend UP-0",1,Time[rt1],r1);

   ObjectMove("Trend UP-0",0,Time[rt2],r2);

//----

   return(0);

  }

//+------------------------------------------------------------------+


 
Vyacheslav Kornev:

質問で申し訳ないのですが、バッファを使ってEAに外部インジケータを挿入する方法は知っているのですが・・・。このインジケーターにはバッファがありませんが、上値と下値を取得するにはどうすればよいのでしょうか?


チャート上に "Trend DN-0"、"Trend UP-0 "という名前のグラフィックオブジェクトを取る。(インジケーターのあるレベルを示す線)から必要なデータを読み取る。

 
Maxim Kuznetsov:

チャート上に "Trend DN-0"、"Trend UP-0 "という名前のグラフィックオブジェクトが表示されます。(インジケータがあるレベルを示す線)から必要なデータを読み取る。


インジケータ本体でこれを行う方法を書いてください。 そして、これらの値から2つのバッファを作り、EAで使用するのですか?

価格はどこに書けばいいのでしょうか?

 
Vyacheslav Kornev:

インジケータ本体でこれを行う方法を書いてください。 そして、これらの値から2つのバッファを作り、EAで使用するのですか?

どのような場所で値段をつけるか?

インジケータはすでに2つのバッファを計算し、描画するためのすべてのデータを持っています。

また、インジケーターを変更するのではなく、インジケーターが引いた線のデータをExpert Advisorから読み取るという申し出がありましたね。
しかし、これはテスターの使用に制限を課します - ビジュアルモードでのみExpert Advisorをテストすることが可能です。

 
Artyom Trishkin:

インジケータはすでに2つのバッファを計算し、描画するためのすべてのデータを持っています。

また、インジケーターを変更するのではなく、インジケーターが引いた線のデータをExpert Advisorから読み込むように提案されていますね。
ただし、この場合、テスターの使用には制限があります。エキスパート・アドバイザーをビジュアル・モードでテストすることしかできません。


インジケーターに書けばいいということです

#property indicator_buffers 2

double BufferUp[]、BufferDn[]。


int OnInit()

{

SetIndexBuffer(0, BufferUp)

SetIndexBuffer(1, BufferDn)

}



この2つのバッファをリンクさせるのですか?

 
Vyacheslav Kornev:

なので、インジケーターに書き込む必要があります

#property indicator_buffers 2

double BufferUp[]、BufferDn[]。


int OnInit()

{

SetIndexBuffer(0, BufferUp)

SetIndexBuffer(1, BufferDn)

}



この2つのバッファをリンクさせるのですか?

見てください、コードの中で行が動いていますね。

ObjectMove("Trend DN-0",1,Time[st1],s1);
ObjectMove("Trend DN-0",0,Time[st2],s2);
//----
ObjectMove("Trend UP-0",1,Time[rt1],r1);
ObjectMove("Trend UP-0",0,Time[rt2],r2);

Time[st1]、Time[st2]およびこれらの基準点s1、s2の価格は1行分である。
Time[rt1], Time[rt2], r1, r2 - 別の行の場合。

線分方程式を使って、これらのポイント間の各バーに対するバッファ値を計算し、この値をバッファに書き込むことができます。

 
Artyom Trishkin:

参照:コードの中で行が動いていますね。

Time[st1]、Time[st2]、そしてこれらのポイントの価格s1、s2があります - 1行分です。
Time[rt1], Time[rt2], r1, r2 - 別の行の場合。

線分方程式を使って、これらのポイント間の各バーに対するバッファ値を計算し、この値をバッファに書き込むことができます。


ということは、ラインの価格を棒引きにすることはできない...。直線の方程式の計算方法がわかりません、できれば、どのような形になるのか書いてください。

また、一般的にはポイント間ではなく、0または1バール以上の値を取る必要があります