[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 261

 
BaceK1 >> :
正確な時刻にポジションを開くには?例えば、現地時間00.15にポジションを建てる必要があります。

if (hour == 0 && minute==15) {then do this;}.

Expert Advisor を調べてみてください。いくつかの括弧が欠けています(不要なものもあります)。

//+------------------------------------------------------------------+
//|                                                   Полуночник.mq4 |
//|                                                            BaceK |
//+------------------------------------------------------------------+
#property copyright "BaceK"
#property link ""
//---- input parameters
extern int Dist_SL=20;
extern int Dist_TP=30;
extern double Prots=0.35;
int start()
{
string Symb=Symbol(); // Финанс. инструмент
int Min_Dist=MarketInfo( Symb,MODE_STOPLEVEL);// Мин. дистанция //Alert("Мин. дистанция = ",Min_Dist);
double Min_Lot=MarketInfo( Symb,MODE_MINLOT);// Мин. размер лота//Alert("Мин. размер лота = ",Min_Lot);
double Free =AccountFreeMargin(); // Свободн средства//Alert("Свободн средства = ",Free);
double One_Lot=MarketInfo( Symb,MODE_MARGINREQUIRED);//Стоим.лота//Alert("Стоим.лота = ",One_Lot);
double Lot=MathFloor(( Free* Prots)/( One_Lot* Min_Lot))* Min_Lot;// Лоты//Alert("Лоты = ",Lot);//Alert("Bars = ",Bars);
//-----------------------------------------------
if( Lot != 0 ) // Проверка свободных срелств                       
 {//Alert("Работа дальше = ",OrderSymbol());
  // Проверка рабочего времени
  int h=TimeHour(TimeCurrent());
  if( h < 1 )
    {for(int i=1; i<=OrdersTotal(); i++) // Цикл перебора ордер
        {if(OrderSelect( i-1, SELECT_BY_POS)==true) // Если есть следующий
           {// Анализ ордеров:
            if(OrderSymbol()!= Symb) // Не наш фин.инструм.
              {//Alert("Работа дальше = ",OrderSymbol());
               // Определение в какую сторону открываться
               if(iOpen(NULL,PERIOD_D1,1)-iClose(NULL,PERIOD_D1,1)< 0)
                 {//Alert("Длинная позиция = ",iOpen(NULL,PERIOD_D1,1)-iClose(NULL,PERIOD_D1,1));
                  int ticket=OrderSend( Symb,OP_BUY, Lot,Ask,3,Bid- Dist_SL*Point,Bid+ Dist_TP*Point);
                 }
               else
                 {//Alert("Короткая позиция = ",iOpen(NULL,PERIOD_D1,1)-iClose(NULL,PERIOD_D1,1));
                  int ticket1=OrderSend( Symb,OP_SELL, Lot,Bid,3,Bid+ Dist_SL*Point,Bid- Dist_TP*Point);
                 }
               if( ticket>0 || ticket1>0) // Получилось :)
                 {// Alert ("Установлен ордер SELL ",ticket || ticket1);
                  Sleep(5000);
                 }
               else
                 {int Error=GetLastError(); // Не получилось :(
                  switch( Error) // Преодолимые ошибки
                    {case 129:...................................
                    }
                  switch( Error) // Критические ошибки
                    {case 2 : ...................................
                    }
                  //Alert (GetLastError());
                  return(0);
                 }
              }
            else
              {//Alert("Выход по Symb = ",Symb);
               return(0);
              }
        }//это скобка закрывающая for() почему после неё идёт else ???????? 
      else
        {//Alert("Выход по ордеров нет = ",Symb);
         if(iOpen(NULL,PERIOD_D1,1)-iClose(NULL,PERIOD_D1,1)< 0)
           {//Alert("Длинная позиция = ",iOpen(NULL,PERIOD_D1,1)-iClose(NULL,PERIOD_D1,1));
            int ticket2=OrderSend( Symb,OP_BUY, Lot,Ask,3,Bid- Dist_SL*Point,Bid+ Dist_TP*Point);
           }
         else{//Alert("Короткая позиция = ",iOpen(NULL,PERIOD_D1,1)-iClose(NULL,PERIOD_D1,1));
              int ticket3=OrderSend( Symb,OP_SELL, Lot,Bid,3,Bid+ Dist_SL*Point,Bid- Dist_TP*Point);
             }
         if( ticket2>0 || ticket3>0) // Получилось :)
           {Sleep(5000);//Alert ("Установлен ордер SELL ",ticket2 || ticket3);            
           }
         else
           {int Error1=GetLastError(); // Не получилось :(
            switch( Error1) // Преодолимые ошибки
              {case 129:................................
              }
            switch( Error1) // Критические ошибки
              {case 2 : ..........................
              }
            Alert(GetLastError());return(0);
           }
    }
  }
// дальше я не могу отследить что откуда ?????????????????????????????????????????????????????????
//?????????????????????????????????????????????????????????????????????????????????????????????????
}else
{// Alert("Выход по времени = ",Hour());
return(0);
}
}else
{return(0);}//Alert("Выход по Lot = ",Lot);
 return(0); //Alert ("Скрипт закончил работу -----------------------------");
}
//+------------------------------------------------------------------+

くそボットはすべてのコードをレイアウトすることを許さない、私はそれをカットする必要があります。switch()をカットして収まるようにしました。

 

どのようにすれば、利用可能なすべての履歴を次の行のような形式でファイルに書き込む ことができるのでしょうか。

O;H;L;C;volume;MA3;MA5;MA7;MA13; ...などの指標をさらに

H1タイムフレームで?

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

 
snowman647 >> :

利用可能なすべての履歴を、以下の文字列の形でファイルに書き込むにはどうすればよいでしょうか。

O;H;L;C;volume;MA3;MA5;MA7;MA13; ...などの指標をさらに

H1タイムフレームで?

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




//+------------------------- WritingLineInFile() ----------------------------
//| Дописывание строки в конец файла
//+---------------------------------
void WritingLineInFile(string FlName, string Text){
  int file_handle=FileOpen( FlName, FILE_CSV| FILE_READ| FILE_WRITE, " ");
	if ( file_handle>0){
		FileSeek( file_handle,0, SEEK_END);
		FileWrite( file_handle, Text);
		FileClose( file_handle);
	}
	else{
	  Print("Ошибка ",GetLastError()," - Не удалось открыть файл ", FlName);
   }
}
//--------------------------------------------------------------------------- 

これは、ファイルの末尾にテキスト行を追加するユーザー定義のサブプログラムです。スタート機能の後に配置されます。最初のうちは、次のように使っています。

 // --------- Генерируем имя файла ------------
  FileName=Symbol()+"_"+DoubleToStr(Day(),0)+"_"+DoubleToStr(Month(),0)+"_"+DoubleToStr(Year(),0)+".txt";
  TextInFile=TimeToStr(TimeCurrent(), TIME_DATE| TIME_SECONDS);
  TextInFile= TextInFile+" "+DoubleToStr(Bid,Digits);
 

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

また、全履歴のウォークスルーを手配する方法を教えてください。

1999年から2009年までのH1データを含むファイルがあります。

 

純粋にテスターのために新しいOSのインストールを計画し、どのOSがより速いテストを持っているか知っている人はいますか?

 

こんばんは。

ちょうど昨日、初めてMQL5を試したところです。ボタンに問題があります。ボタンの座標の設定、色の変更、テキストの設定、ボタンからのフィードバックの受け取り方について教えてください。MT5リリース前に公開されていた旧バージョンを使ってみたのですが、どうでしょうか?どこで読めますか?ありがとうございます。:)

 
Patriot писал(а)>>

こんばんは。

ちょうど昨日、初めてMQL5を試したところです。ボタンに問題があります。ボタンの座標の設定、色の変更、テキストの設定、ボタンからのフィードバックの受け取り方について教えてください。MT5バージョンが出る前の旧バージョンを使ってみたことがあります。どこで読めますか?ありがとうございます。:)

こちらへ...MetaTrader 5のベータテストを開始しました。

 


ありがとうございました。:)
 
001 писал(а)>>

純粋にテスターのために新しいOSのインストールを計画し、どのOSがより速いテストを持っているか知っている人はいますか?

と、とにかく......この件では新しいスレッドを立てないでくださいね?

 

XPで話題終了...。

)))