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

 
Kot:

こんにちは。


ある計算をするEAがあるのですが。さまざまな数学演算、配列、ループを使用します。その結果をファイルに保存 します。すべてのアクションを実行した後に、すべてを最初からやり直さなければならないのです。一度すべての計算を行った後、2回目からは何もせずにハングアップしています。新しい計算を始める前に、変数をゼロにしたり、配列をクリアしたりする必要があるかどうか、アドバイスをお願いします。

ファイルを閉じてみましたか?

 
こんにちは!かすかな知識でインジケータを作ろうとしている人柱(私)に助けを求めます)))しかし、表示されるべきものは理解しています)))。So:
MT4用の松葉杖/インジケータ/スクリプト(タブ "about, general, input parameters, colors, display" があるインジケータとして)をプログラムして、.csvファイルからデータを取得するように するには、例えばソースファイルの形式を 指定します。
ユーロ;TF;1.192;1.1733
ユーロ;TN;1.2037;1.1663
EUR;AB1;1.1906499615;1.1797479615
CHF;TF;1.0362;1.0183
CHF;TN;1.0479;1.0121
CHF;AB1;1.03484132734247;1.02549513556164


つまり、
ファイルから記録されたデータを取り出し、それを線分(TF、TA)または色のついたバンド(EA)として、エクステントのパラメータを「1日」に等しくして 表示するインディケータ です。(МТ4上の日の垂直セパレータの境界から境界まで)、行については、線の色、線の種類の選択、テキストの色とコメントのサイズの選択とコメント行の置換として "TF - 1,192" 2行目 "TF - 1,1733" これらはファイルの該当行から取得されています。範囲は純粋に水平方向で、EUR;TF;1.192;1,1733のラインから、1つのスロットの最初の桁と2番目の桁をスロット1.192の開始とスロット1.192の終了としています。
また、レンジもあり、例えばEAでは、原理は最初から最後まで同じですが、価格が異なり、ラインはCHF;AB1;1.03484132734247;1.02549513556164始まりは
1.03484132734247 終了はレンジ1.02549513556164と します。MT4を起動すると(gafikの通常のインジケータとして)、毎日チャート上に、現在の日のすべてのデータを一度に正確に追加し、以前に適用されたすべての行がチャートから削除されず、重複しないように動作します。このすべてで、その日のすべてのセグメントと範囲を選択し、表示します。アクティブウィンドウが今ある場所と、他のアクティブウィンドウ(つまり実行中の場所)のみです(つまり、ペアを開き、インディケータが現在の日のすべてのセグメントと範囲を描き、ペアのために落ち着くなどしました)。

例えば、インジケーターのInput parametersのタブは どのように表示すればよいでしょうか

Переменная________Значение
Funtik________//--Общие настройки--//
ドローTF____true
ドローTN _______true
ドローAB1___true
AB2を描く____false
テキストキャプションの色 ________Black
Шрифт подписей__________________Arial
テキストキャプションのフォントサイズ ________9
TFラインカラー ______________
回線種別 TF ______________
TNラインカラー ______________
回線種別 TN ______________
バンドカラー AB1__________
バンドカラー AB2__________
ファイル頻度(秒) ______2
ファイル名 ___________5.csv

自分自身を落書きしようとしたが、簡単に見えたが、いまいましいものを取得しないでください(しかし、私は人道的であり、何ができる...)ヘルプは、溺死してください!!!!!!!!!!!!!!!!。


//+------------------------------------------------------------------+
//|                                                        Funtik.mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
 
#property indicator_chart_window
//---- input parameters
extern string    Funtik="5.csv";
//+------------------------------------------------------------------+
//| extern variables                                       |
//+------------------------------------------------------------------+
extern  bool    РисоватьTB = false      ;
extern  bool    РисоватьTN = false      ;
extern  bool    РисоватьTF = false      ;
extern  bool    РисоватьAB1 = false     ;
extern  bool    РисоватьAB2 = false     ;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
//----
      int handle,sst=1;
     double  NameCena;
     string NameF ,NameTi,NameFT;
      bool h1;
      
   while(sst>0)
                 {
   handle=FileOpen(Funtik,FILE_CSV|FILE_READ,';');
 //  Comment ("Файл ",Funtik,"открыт");
   if(handle>=0)
    {
     NameF=FileReadString(handle);           // Читается наименование бумаги
     NameTi=FileReadString(handle);          // Читается первая котировка и подставляется в начало первого отрезка линии или диапазона
     NameCena=FileReadNumber(handle);        // Читается цена последней котировки для первого отрезка линии или диапазона
     NameFT=FileReadString(handle);          // Читается последняя котировка для диапазона
     
     Alert(NameF," ",NameTi," ",NameCena," ",NameFT);
       if(FileIsEnding(h1))
       {
     FileClose(h1);
     return(false);
     sst=0;
       }
    }
               }
     FileClose(handle);   
 
  //fComment(Funtik);
//----
   return(0);
  }
//+------------------------------------------------------------------+

 

こんにちは。

以下のプログラムのバグを見つけるのを手伝ってください!!!

//+------------------------------------------------------------------+
//|をテストしています。mq4|(エムキューブ
//| Copyright 2018, MetaQuotes Software Corp.
//|httpsを使用しています。//wwwmql5.com|コメント||電子書籍ストア「BookLive!
//+------------------------------------------------------------------+
#property copyright "365_MA"
#プロパティリンク "https://www.mql5.com"
#property version "1.00"
#プロパティの厳密さ

extern Period_MA = 365; //周期MA 1
extern double Delta = 0.0010; //注文を開けることができる距離

string Symb; //取引商品の名称
//int 合計; //注文数

//+------------------------------------------------------------------+
//|エキスパート初期化関数|
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0)です。
}
//+------------------------------------------------------------------+
//|エキスパート初期化関数|
//+------------------------------------------------------------------+
int deinit()
{
//----
ObjectDelete("Obj_Label")。
ObjectDelete("Obj_Label2")。
//----
return(0)です。
}
//+------------------------------------------------------------------+
//|エキスパートスタート機能|
//+------------------------------------------------------------------+
int start()
{



double prise = Bid;//現在の価格
double CurrMAValue = iMA(Symb, Period(),Period_MA, 0,Mode_EMA, PRICE_CLOSE, 0); //移動平均の 値です。
double Price2MA = price - CurrMAValue;//MAと価格の距離
datetime NextClose = Time(0) + Period()*60*2;//閉じる時間
int MinutesToNextClose = (NextClose - TimeCurrent())/60 + 1; //クローズまでの時間(分)

//int err;



//チャートのテキスト情報を更新する

ObjectSetText ("Obj_Label", "TF" + Period() + ", " + DoubleToStr(price, 4) + ", tick " + TimeToStr(TimeCurrent(), TIME_SECONDS) + ", O@")+ TimeToStr(Time[0], TIME_MINUTES) + ", NC@".+ TimeToStr(NextClose, TIME_MINUTES) + " (" + MinutesToNextClose + " min)", 10,
ObjectSetText ("Obj_Label2", "Delta " + DoubleToStr(Delta,4) + ", MA value " + DoubleToStr(CurrMAValue, 4) + ", distance to MA " + DoubleToStr(Price2MA, 4), 10, "Arial", DarkGreen );
//価格を考慮し、アラートを生成する

if ((MathAbs(Price2MA) < Delta) && // МАとの距離がデルタより小さい場合。
(価格 > CurrMAValue) && // そして価格はMAより高いです。
(Open(0) > CurrMAValue+Delta) // かつ、現在のローソク足がMA+Deltaより高く開いた場合。
(
アラート(「価格は上からMAに接近しています。)
)

if ((MathAbs(Price2MA) < Delta) && // MAとの距離がデルタより小さい場合。
(価格 < CurrMAValue) && // 価格がMAの下にある。
(Open(0) < CurrMAValue-Delta)) // そして、現在のローソク足はMAデルタの下でオープンしました。
(

アラート(「価格がMAの下に接近しました。)
)

return(0)です。


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

コンパイル後、以下のエラーが発生します。

Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. Куда исчезли "Сообщения"? У меня в профиле исчез раздел...
ファイル:
Error.jpg  60 kb
 
berkley75:

こんにちは。

以下のプログラムのバグを見つけるのを手伝ってください!!!


コンパイル後、以下のエラーが発生しました。

//+------------------------------------------------------------------+
//|                                                         test.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "365_MA"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

extern int    Period_MA = 365;  //Период МА 1
extern double Delta = 0.0010;   //На каком расстоянии открывать ордер

string Symb;                  //Название торгового инструмента
//int Total;                  //количество ордеров

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
 {
//----
 
//----
   return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
 {
//----
   ObjectDelete("Obj_Label");
   ObjectDelete("Obj_Label2");
//----
   return(0);
}
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
 {
   
 

double prise = Bid;                                                             //текущая цена
double CurrMAValue = iMA(Symb, Period(),Period_MA, 0,Mode_EMA, PRICE_CLOSE, 0); //значение скользящей средней
double Price2MA = price - CurrMAValue;                                          //расстояние о МА до цены
datetime NextClose = Time(0) + Period()*60*2;                                   //время до закрытия
int MinutesToNextClose = (NextClose - TimeCurrent())/60 + 1;                    //время до закрытия в минутах

//int err;



//обновление текст информации на графике

ObjectSetText ("Obj_Label", "ТФ" + Period() + ", " + DoubleToStr(price, 4) + ", тик " + TimeToStr(TimeCurrent(), TIME_SECONDS) + ", O@" + TimeToStr(Time[0], TIME_MINUTES) + ", NC@" + TimeToStr(NextClose, TIME_MINUTES) + " (" + MinutesToNextClose + " min)", 10,
ObjectSetText ("Obj_Label2", "Дельта " + DoubleToStr(Delta,4) + ", знач МА " + DoubleToStr(CurrMAValue, 4) + ", расст до МА " + DoubleToStr(Price2MA, 4), 10, "Arial", DarkGreen );
//анализ цены и выдача алертов

if ((MathAbs(Price2MA) < Delta) &&   // если расстоание до МА меньше дельты
   (Price > CurrMAValue) &&          // и цена выше МА
   (Open(0) > CurrMAValue+Delta))    // и текущая свеча открылась выше, чем МА+дельта
( 
   Alert ("Цена подощла к МА сверху");
)

if ((MathAbs(Price2MA) < Delta) &&   // если расстояние до МА меньше дельты
   (price < CurrMAValue) &&          // и цена ниже МА
   (Open(0) < CurrMAValue-Delta))    // и текущая свеча открылась ниже, чем МА-дельта
( 

   Alert ("Цена подошла к МА снизу");
)

   return(0);
}
   
   
//+------------------------------------------------------------------+


中括弧が抜けています。

 
EAのFreeMarginCheck関数で、誤ってマイナスの数量(ロット)を設定してしまった場合のInvalid Lot Amountエラーの修正方法を教えてください。テスターでエラーメッセージを 出さずに、間違ったロットに関するメッセージを表示させるには
 
Roman Sharanov:

ジグザグを自作のインジケータに組み込む必要がある(今はハンドルでカウントしている)。

私のインジケータはOnCalculate()を使用していないことです。

では、どのようにジグザグを動作させ、rates_totalとprev_calculatedを取得すればいいのでしょうか?

rates_total は、チャートのバーの本数 です。Bars機能を使って決定されます。

prev_calculated - 自分で類似のものを作り、グローバルに(あるいは静的に)宣言し、そこに現在の反復で実際に計算されたバーの数を書きます。つまり、インジケータ値の計算に成功した後、その中に現在のバーの数を記録する必要があるのです。計算が失敗した場合は、次の繰り返しでヒストリーの各バーについてインジケータ値を再計算するために、NULLにするのがよいでしょう。

 

Re:アレクセウ・フェドトフ

ブレースとは何か、すみません

 
berkley75:

Re:アレクセウ・フェドトフ

ブレースとは何か、すみません

括弧内は、関数sin(30)の引数
角括弧内は,配列 x[25] のインデックス.
void start()
{
中括弧内演算子ブロック
}
 
こんにちは、"market overview "ウィンドウで特定のシンボルを表示/削除する方法を教えていただけませんか?
 
STARIJ:
括弧内は関数sin(30)の引数
角括弧内は、配列 x[25] のインデックス。
void start()
{
中括弧内演算子ブロック
}
ありがとうございます、まだコンパイルできません最後にくるくるブレスをつけても、気が付いたら!!!!