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

 
costy_:
ありがとうございます。
 
Roman.:


端末のコピー...:-)

それぞれ独自の取引口座を持っています。

複数の端末を同時に起動し、それぞれで異なるユーザー名でログインする必要があるということですか?
 
LOA:

ああ..."網羅的 "な回答。すべてのイベントには理由があるはずです。プロは、問題に遭遇したとき、何に気をつければよいかを知っています。何度もアルゴリズムに目を通しましたが、原因を見つけることができません。 そこで、プロの方にアドバイスをお願いしたいのですが、何が原因なのでしょうか?
さて、あなたはそれを自分で行うことができない場合は、全体としてアルゴリズムは、与えられた行に明らかな欠陥がない、傷つけることはありません。この発言は、まったくもって的を射ている。
 
costy_:

...インジケータを使用します。

int start(){
  double Val=iCustom(NULL, 0, "HMR MULTI Indicator",0,0);   
  Alert(Val);
}

空のExpert Advisorで "直感 "法を試してみる。

ObjectCreateの インジケータで、そのサブウィンドウを見つけるために チェックします(または、IF TESTING OR OPTIMIZINGでなぜそれを描画 します)。

if(IsTesting()||IsOptimization())флаг_Канады_не_рисовать_obj=true;          //проверяем надо ли рисовать (в ините ему место через статик переменную)
if(!флаг_Канады_не_рисовать_obj){                                           //запрет отрисовки объектов ели оптимизация или тестирование
ObjectCreate(........................);
}


空のExpert Advisorを試したところ、Alertは正常に表示されましたが、IndicatorObjectCreateでは このように表示されます。

#property indicator_separate_window
#property indicator_buffers 8
#property indicator_color1 Yellow
#property indicator_color2 Aqua
#property indicator_color3 Blue
#property indicator_color4 Red
#property indicator_color5 White
#property indicator_color6 Magenta
#property indicator_color7 Lime
#property indicator_color8 Indigo

extern string S1 = "EURUSD";  
extern string S2 = "EURJPY";  
extern string S3 = "EURCAD";  
extern string S4 = "AUDUSD";  
extern string S5 = "GBPUSD";  
extern string S6 = "USDJPY";  
extern string S7 = "USDCHF";  
extern string S8 = "USDCAD";
//переменные объявляем сразу,чтобы постоянно не создавались (оптимизация)
double Buff1[],Buff2[],Buff3[],Buff4[],Buff5[],Buff6[],Buff7[],Buff8[],
       x1,x2,x3,x4,x5,x6,x7,x8;
int    BarsOnScreen,LeftBar,RightBar,i;
bool   _init;
string name = "HMR MULTI Indicator";     
//+------------------------------------------------------------------+
int init()
  {
   _init = false;
   IndicatorBuffers(8);
   //Если символ графика совпадает с символом прорисовки,нарисуем линию толще
   if (Symbol()==S1) i=3;else i=1;
   SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,i,indicator_color1); SetIndexBuffer(0,Buff1);
   if (Symbol()==S2) i=3;else i=1;
   SetIndexStyle (1,DRAW_LINE,STYLE_SOLID,i,indicator_color2); SetIndexBuffer(1,Buff2);
   if (Symbol()==S3) i=3;else i=1;
   SetIndexStyle (2,DRAW_LINE,STYLE_SOLID,i,indicator_color3); SetIndexBuffer(2,Buff3);
   if (Symbol()==S4) i=3;else i=1;
   SetIndexStyle (3,DRAW_LINE,STYLE_SOLID,i,indicator_color4); SetIndexBuffer(3,Buff4);
   if (Symbol()==S5) i=3;else i=1;
   SetIndexStyle (4,DRAW_LINE,STYLE_SOLID,i,indicator_color5); SetIndexBuffer(4,Buff5);
   if (Symbol()==S6) i=3;else i=1;
   SetIndexStyle (5,DRAW_LINE,STYLE_SOLID,i,indicator_color6); SetIndexBuffer(5,Buff6);
   if (Symbol()==S7) i=3;else i=1;
   SetIndexStyle (6,DRAW_LINE,STYLE_SOLID,i,indicator_color7); SetIndexBuffer(6,Buff7);
   if (Symbol()==S8) i=3;else i=1;
   SetIndexStyle (7,DRAW_LINE,STYLE_SOLID,i,indicator_color8); SetIndexBuffer(7,Buff8);
  return(0);
  }
//+------------------------------------------------------------------+
int deinit()
  {
  ObjectsDeleteAll();  
  return(0);
  }
//+------------------------------------------------------------------+
int start()
{
      if (!_init) MyInit();
      BarsOnScreen = WindowBarsPerChart()+1;
      LeftBar = WindowFirstVisibleBar();
      RightBar = LeftBar-BarsOnScreen;
      if (RightBar<0) RightBar=0;
       //Проверяем есть ли история баров для прорисовки
      if (LeftBar>iBars(S1,0) || LeftBar>iBars(S2,0) || LeftBar>iBars(S3,0) || LeftBar>iBars(S4,0) ||
          LeftBar>iBars(S5,0) || LeftBar>iBars(S6,0) || LeftBar>iBars(S7,0) || LeftBar>iBars(S8,0)) return;
       //Выносим из цикла,чтобы уменьшить расчёты (оптимизация)
       x1=iClose(S1,0,iHighest(S1,0,MODE_CLOSE,BarsOnScreen,RightBar));
       x2=iClose(S2,0,iHighest(S2,0,MODE_CLOSE,BarsOnScreen,RightBar));
       x3=iClose(S3,0,iHighest(S3,0,MODE_CLOSE,BarsOnScreen,RightBar));  
       x4=iClose(S4,0,iHighest(S4,0,MODE_CLOSE,BarsOnScreen,RightBar));
       x5=iClose(S5,0,iHighest(S5,0,MODE_CLOSE,BarsOnScreen,RightBar));
       x6=iClose(S6,0,iHighest(S6,0,MODE_CLOSE,BarsOnScreen,RightBar));
       x7=iClose(S7,0,iHighest(S7,0,MODE_CLOSE,BarsOnScreen,RightBar));
       x8=iClose(S8,0,iHighest(S8,0,MODE_CLOSE,BarsOnScreen,RightBar));
       for(i=RightBar; i<LeftBar; i++)
        {       
         Buff1[i] = iClose(S1,0, i)/x1;
         Buff2[i] = iClose(S2,0, i)/x2;
         Buff3[i] = iClose(S3,0, i)/x3;  
         Buff4[i] = iClose(S4,0, i)/x4;
         Buff5[i] = iClose(S5,0, i)/x5;
         Buff6[i] = iClose(S6,0, i)/x6;
         Buff7[i] = iClose(S7,0, i)/x7;
         Buff8[i] = iClose(S8,0, i)/x8;
        }
return(0);
}   
//+------------------------------------------------------------------+
void MyInit ()
{
   //Подменяем имя индикатора чтобы получить уникальный номер окна
   string label = GetTickCount();
   IndicatorShortName(label);
   int win = WindowFind(label);
   //Восстанавливаем имя индикатора
   IndicatorShortName(name);
   //---- labels    
   ObjectCreate("L1"+label,OBJ_LABEL,win,0,0,0,0);
   ObjectSet("L1"+label,OBJPROP_XDISTANCE,10);
   ObjectSet("L1"+label,OBJPROP_YDISTANCE,12);
   ObjectSetText("L1"+label,S1,10,"Tahoma",indicator_color1);
   ObjectCreate("L2"+label,OBJ_LABEL,win,0,0,0,0);
   ObjectSet("L2"+label,OBJPROP_XDISTANCE,10);
   ObjectSet("L2"+label,OBJPROP_YDISTANCE,24);
   ObjectSetText("L2"+label,S2,10,"Tahoma",indicator_color2);
   ObjectCreate("L3"+label,OBJ_LABEL,win,0,0,0,0);
   ObjectSet("L3"+label,OBJPROP_XDISTANCE,10);
   ObjectSet("L3"+label,OBJPROP_YDISTANCE,36);
   ObjectSetText("L3"+label,S3,10,"Tahoma",indicator_color3);
   ObjectCreate("L4"+label,OBJ_LABEL,win,0,0,0,0);
   ObjectSet("L4"+label,OBJPROP_XDISTANCE,10);
   ObjectSet("L4"+label,OBJPROP_YDISTANCE,48);
   ObjectSetText("L4"+label,S4,10,"Tahoma",indicator_color4);
   ObjectCreate("L5"+label,OBJ_LABEL,win,0,0,0,0);
   ObjectSet("L5"+label,OBJPROP_XDISTANCE,10);
   ObjectSet("L5"+label,OBJPROP_YDISTANCE,60);
   ObjectSetText("L5"+label,S5,10,"Tahoma",indicator_color5);   
   ObjectCreate("L6"+label,OBJ_LABEL,win,0,0,0,0);
   ObjectSet("L6"+label,OBJPROP_XDISTANCE,10);
   ObjectSet("L6"+label,OBJPROP_YDISTANCE,72);
   ObjectSetText("L6"+label,S6,10,"Tahoma",indicator_color6);
   ObjectCreate("L7"+label,OBJ_LABEL,win,0,0,0,0);
   ObjectSet("L7"+label,OBJPROP_XDISTANCE,10);
   ObjectSet("L7"+label,OBJPROP_YDISTANCE,84);
   ObjectSetText("L7"+label,S7,10,"Tahoma",indicator_color7);
   ObjectCreate("L8"+label,OBJ_LABEL,win,0,0,0,0);
   ObjectSet("L8"+label,OBJPROP_XDISTANCE,10);
   ObjectSet("L8"+label,OBJPROP_YDISTANCE,96);
   ObjectSetText("L8"+label,S8,10,"Tahoma",indicator_color8);
   WindowRedraw();
   _init = true;
}

ここを変えればいいのか......?

 
kolyango:


空のEAで試したところ、Alertは問題なく表示されましたが、インジケータObjectCreateではこのような 表示になっています。

ここを変えなければならないのか...?

が確保されます。

iClose(S1,0,iHighest(S1,0,MODE_CLOSE,BarsOnScreen,iBarShift(S1,0,Time[RightBar])));

をお持ちの方

iClose(S1,0,iHighest(S1,0,MODE_CLOSE,BarsOnScreen,RightBar))

けた違い

いっかつじざい

そして、とても時間がかかる ))tutz

ファイル:
xxx.mq4  7 kb
 
gara:

皆さんこんにちは、プロの方に質問です。

MT4の仕組みについて詳しく教えてください。

私のビジョン

ターミナルが起動し、インターネットに接続され、市場概要でいくつかの機器が起動し、そこからいくつかのチャートが開かれています。ある楽器を考えてみましょう。チャートが開いていて、前後にティックしてバーが閉じたとします。その瞬間は明確ではない。

私のチャートで見る最後に形成されたバーは、ブローカー側のバーに対応していますか?ティックの一部が欠ける可能性があるため、各ティックの到着と完全に同期しているのでしょうか?

ブローカーの履歴と自分の履歴はどれくらいの頻度で同期されますか?


あえて質問を繰り返す
 
gara:
あえて質問を繰り返す
gara 端末は1tickごとに 同期しています。1秒間に数回のティックが発生することもあります。接続が切れた場合のみ、同期がとれなくなります。この場合、通信が再開されると、取りこぼしたティックが読み込まれます。
 
igid:
つまり、複数の端末を同時に立ち上げて、それぞれ別のログイン名でログインする必要があるのですね。

その通りです。ターミナルを一からインストールするのではなく、すでに設定されている既存のターミナルを1,2,3,4...100といったフォルダにコピーしておくと楽です。

そして、それぞれの端末で「口座を開く」を押し、同時にExpert Advisorを異なる設定で起動し、1~2ヶ月後にどの設定がベストなのか確認したいところである。

 

アルパリターミナルを利用されている方にアドバイスをお願いします。50通貨ペアのExpert Advisorを実行していますが、保留中の注文でさえ、ティックが欠落し続けます。スリップをセットしています。

また、マーケット概要ウィンドウにシンボルがあるにもかかわらず、エラー4066が発生します。

そんなに不具合の多いサーバーなのでしょうか?別の証券会社では、このような問題の何分の一かを抱えていても、私は直面しませんでした。

 

皆さん、こんにちは。

私はプログラミングの全くの素人で、私のロボットは週に2回しかトレードをしません。

しかし、チャート上の移動平均線(標準のiMaを使用しています)の線の色を変更する方法を教えてください(!本当に検索するのに疲れました!)。

コード例 FixEma= iMA (NULL,0,fix,0, MODE_EMA, PRICE_LOW,0);

実際、赤色で(6個あります)、テストのたびに手動でチャートを塗らなければなりません(私はそうなのですが・・・)。書き直したくないんです。

もしかしたら、標準的なコマンドがあるのでは?

厳しく判断しないでください、勉強中なんです...。