エラー、バグ、質問 - ページ 355

 
エージェントの場合は、常にメインコンピュータと同じなのでしょうか?
削除済み  
dimonsky:
エージェントは常にマスターコンピューターと同じストーリーを持っているのでしょうか?
アイデアはイエスですが、履歴の同期やその他いくつかの点で問題があります。
 

スレッドを全部読んでないので、既出だったらご容赦ください。

1.テストの開始と終了の時間(日付と混同しないように)を選択することは可能でしょうか。

2.テスターで他のペアの取引を表示するには、設定(多通貨用 - 1つの楽器用 -テスト結果 で「チャートを開く」、およびその他)で設定されている場合を除き、どのように。

 
Retsam:

スレッドを全部読んでないので、既出だったらご容赦ください。

1.テストの開始と終了の時間(日付と混同しないように)を選択することは可能でしょうか。

2.テスターで、設定以外の他のペアの取引を表示する方法(多通貨用 - 1つの楽器用 -テスト 結果の "オープンチャート"、および他のために)。

1 そのような機能はありません - あなたがそれをするように要求しない限り。

2 また、そのようなものはありません。

 

アフタヌーン!

MT 5.425 Windows 7 x64

サブウィンドウ(サブウィンドウ1)でインジケータを起動し、そこにバッファを使ってチャートを置いています。 ウィンドウの最小値と最大値をそれぞれ ChartGetDouble(0,CHART_PRICE_MAX,1) と ChartGetDouble(0,CHART_PRICE_MIN,1) で取得したいのですが、どうすればいいですか?

出力は0、メインウィンドウの最小値と最大値が正しく表示されている(ChartGetDouble(0,CHART_PRICE_MAX) ChartGetDouble(0,CHART_PRICE_MIN) )。ChartRedraw(0)が動作しない。チャートがマウスでスクロールし始めると、値が死んでしまいます - 正しく表示され始めます。

初めて起動したときや、インジケーターのプロパティで値を変更したときに発生します。

もしかしたらエラーかもしれないし、私のやり方が悪いのかもしれない。

ヘルプファイルのこの項目はどういう意味ですか?

CHART_PRICE_MIN 最小チャートダブルR/Oモディファイ - サブウィンドウ番号

CHART_PRICE_MAX チャートの最大値double r/o modifier - subwindow number

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

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков - Документация по MQL5
 
すべてのチャートウィンドウに0から番号が振られています。0 - メインチャートウィンドウ、1 - 最初のインジケータのウィンドウ。といった具合に。
 

何が問題なのかがわからない。

2つの指標のパラメータが同じであれば、EAは買いしか開きませんが、パラメータが異なると、どのようにポジションを閉じるのかがよくわかりません......。

理論的には、2つ目の指標で取引を終了するはずなのですが、そうではありません。コードそのものです。

#include <Trade\Trade.mqh>
#include <Trade\PositionInfo.mqh>
#include <Trade\SymbolInfo.mqh>
#include <Trade\OrderInfo.mqh>
MqlRates mrate[];

input int TriX_PARAM=14;
input int TriX_PARAM_Close=50;

double TriX[];
double TriX_Close[];
int TriXHandle;
int TriXHandle_Close;

int OnInit()
  {

   TriXHandle=iTriX(Symbol(),PERIOD_CURRENT,TriX_PARAM,PRICE_WEIGHTED);
   TriXHandle_Close=iTriX(Symbol(),PERIOD_CURRENT,TriX_PARAM_Close,PRICE_WEIGHTED);
   return(0);
  }

void OnTick()
  {
   CTrade mytrade;
   CPositionInfo myposition;
   CSymbolInfo mysymbol;
   COrderInfo myorder;

   bool Sell_opened,Buy_opened;
   if(myposition.Select(_Symbol)==true) { if(myposition.Type()==POSITION_TYPE_BUY) Buy_opened=true;  if(myposition.Type()==POSITION_TYPE_SELL) Sell_opened=true;}

//Закрываем позицию
   if(Buy_opened==true || Sell_opened==true)
     {
      ArraySetAsSeries(TriX_Close,true);
      CopyBuffer(TriXHandle_Close,0,0,4,TriX_Close);

      if(Sell_opened=true && TriX_Close[1]>TriX_Close[2] && TriX_Close[2]<TriX_Close[3]) mytrade.PositionClose(_Symbol);
      if(Buy_opened=true && TriX_Close[1]<TriX_Close[2] && TriX_Close[2]>TriX_Close[3]) mytrade.PositionClose(_Symbol);

     }

//Открываем позицию
   if(Buy_opened==false && Sell_opened==false)
     {
      ArraySetAsSeries(TriX,true);
      CopyBuffer(TriXHandle,0,0,4,TriX);
      
      if(TriX[1]>TriX[2] && TriX[2]<TriX[3]) mytrade.Buy(0.1,_Symbol,NormalizeDouble(mysymbol.Ask(),_Digits),0,0);
      if(TriX[1]<TriX[2] && TriX[2]>TriX[3]) mytrade.Sell(0.1,_Symbol,NormalizeDouble(mysymbol.Bid(),_Digits),0,0);

     }
  }
 
最適化中に端末が更新されないようにすることは可能ですか?
 
Jager:
最適化中に端末の更新を行わないようにすることは可能ですか?

そのため、端末を起動したまま5~10分ほど更新がなかった場合。

更新されないし、更新されても新しい設定は保存されない。

端末を再起動する前に、もちろんインターネットをオフにすることができます

 
Mr.FreeMan:

何が問題なのかがわからない。

2つのインジケータのパラメータが同じであれば、EAはBuyのみをオープンし、パラメータが異なれば、どのようにポジションをクローズするかは不明です............。

理論的には、2つ目の指標で取引を終了するはずなのですが、そうではありません。コードそのものです。

コードそのもの:最初のうちは、配列に違うマークをつける必要があります。

そのほうがいい)、変えてください。

CopyBuffer(TriXHandle_Close,0,0,3,TriX_Close);
CopyBuffer(TriXHandle,0,0,4,TriX);

此処に於て

CopyBuffer(TriXHandle_Close,0,0,3,TriX_Close);
CopyBuffer(TriXHandle,0,0,3,TriX);

また、変更

 if(Sell_opened=true && TriX_Close[1]>TriX_Close[2] && TriX_Close[2]<TriX_Close[3]) mytrade.PositionClose(_Symbol);
 if(Buy_opened=true && TriX_Close[1]<TriX_Close[2] && TriX_Close[2]>TriX_Close[3]) mytrade.PositionClose(_Symbol);
      if(TriX[1]>TriX[2] && TriX[2]<TriX[3]) mytrade.Buy(0.1,_Symbol,NormalizeDouble(mysymbol.Ask(),_Digits),0,0);
      if(TriX[1]<TriX[2] && TriX[2]>TriX[3]) mytrade.Sell(0.1,_Symbol,NormalizeDouble(mysymbol.Bid(),_Digits),0,0);

をこれに加える。

 if(Sell_opened=true && TriX_Close[0]>TriX_Close[1] && TriX_Close[1]<TriX_Close[2]) mytrade.PositionClose(_Symbol);
 if(Buy_opened=true && TriX_Close[0]<TriX_Close[1] && TriX_Close[1]>TriX_Close[2]) mytrade.PositionClose(_Symbol);
      if(TriX[0]>TriX[1] && TriX[1]<TriX[2]) mytrade.Buy(0.1,_Symbol,NormalizeDouble(mysymbol.Ask(),_Digits),0,0);
      if(TriX[0]<TriX[1] && TriX[1]>TriX[2]) mytrade.Sell(0.1,_Symbol,NormalizeDouble(mysymbol.Bid(),_Digits),0,0);