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

 

うーん...座標を変えることは考えていませんでした。ご指摘ありがとうございます。

では、ここで質問です。エントリーポイント条件があります。ティック毎にゼロにリセットされないように、スタティック変数 で実装しました。さて、チャートのいくつかの場所で、ロボットは水平レベルが存在しないエントリーポイントを描き、したがって、それらのMAとの交差があります。テスターでコードを実行していただければ、問題がわかると思います。EURUSDについて。この問題は、別の方法で実装する必要があるのでは?私はプログラミングのプロではありません。

つまり、パターンが出現し、レベルが描かれ、ロボットはレベルの1つを3回横切るのを待つのである。

それについてどう思いますか?

 
voron_026:

うーん...座標を変えることは考えていませんでした。ご指摘ありがとうございます。

では、ここで質問です。エントリーポイント条件があります。ティック毎にゼロにリセットされないように、スタティック変数 で実装しました。さて、チャートのいくつかの場所で、ロボットは水平レベルが存在しないエントリーポイントを描き、したがって、それらのMAとの交差があります。テスターでコードを実行していただければ、問題が わかると思います。EURUSDについて。この問題は、別の方法で実装する必要があるのでは?私はプログラミングのプロではありません。

つまり、パターンが出現し、レベルが描かれ、ロボットはレベルの1つを3回横切るのを待つのである。

それについてどう思いますか?

誰が必要なんだ、こんなこと言っていいのか?ロボットがどこから値を得ているのかを調べれば、問題の別の解決策が見つかるはずです。

 

ヘルプ2がエラーを出す!?私は赤でエラーを強調しました、ヘルプPLZ!



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

//| Asyll.mq4によるトレイリングストップ |。

//| Copyright 2017, MetaQuotes Software Corp.

//| https://www.mql5.com |

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

#property copyright "Alibek Asyll"

#プロパティリンク "https://www.mql4you.com"


extern int TralType = 0; // 0-Sar、1-ATR、2-HMA。

extern double SAR_Step = 0.02;

extern double SAR_Max = 0.2;

extern int ATR_Period = 14;

extern double ATR_K = 2.0;

extern inttern MMA_Period = 16;

extern int int MMA_Method = 3;

extern inttern MMA_Shift = 0;

datetime LBT。

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

//| 専門家による初期化機能

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

int init()

{

//---

//---

return(0)です。

}

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

//| 専門家による初期化関数

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

int deinit()

{

//---

return(0)です。

}

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

//| エキスパートティック機能

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

int start()


{

bool error = false。

if (LBT!=Time[0] {)

if (注文合計()>0) {。

for (int i=o; i<OrdersTotal(); i++){

if (OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderType()<2) {。

double SL = OrderStopLoss();

if (OrderType()==0){。

switch (TralType) {

case 0: SL = iSAR(NULL,0,SAR_Step, SAR_Max,0);

が壊れる。

ケース1:SL = High[1] - iATR(NULL,0,ATR_Period,1)*ATR_K。

が壊れる。

case 2: SL = iCustom(NULL,0, "VinI_HMA_sound&amp",HMA_Period, HMA_Method, 3, HMA_Shift,false,false,",1,0,0);

が壊れる。

}

if (SL<OrderStopLoss())

SL = OrderStopLoss()。

}

if (OrderType()==1){。

switch (TralType){。

case 0: SL = iSAR(NUll,0,SAR_Step, SAR_Max,0);

が壊れる。

ケース1:SL = Low[1] + iATR(NULL,0,ATR_Period,1)*ATR_K。

が壊れる。

case 2: SL = iCustom(NULL,0, "VinI_HMA_sound&amp",HMA_Period, HMA_Method, 2, HMA_Shift,false,false,",1,0,0);

が壊れる。

}

if (SL>OrderStopLoss())

SL = OrderStopLoss()。

}

if (SL!=OrderStopLoss()の場合){

if (!OrderModify(OrderTicket(),OrderOpenPrice(),OrderTakeProfit(),0))

error = true とする。

}

}

if (!エラー)

LBT = Time[0];

}


return()です。

}

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

Автоматический трейдинг и тестирование торговых стратегий
Автоматический трейдинг и тестирование торговых стратегий
  • www.mql5.com
Выберите подходящую торговую стратегию и оформите подписку на нее в пару кликов. Все Сигналы сопровождаются подробной статистикой и графиками. Станьте Поставщиком торговых сигналов и продавайте подписку тысячам трейдеров по всему миру. Наш сервис позволит вам хорошо зарабатывать на прибыльной стратегии даже при небольшом стартовом капитале...
 
Asyll: Help two gives out errors!赤色でハイライトされたエラー、ヘルプPLZ!

SRCボタンでコードを挿入 するのは理にかなっています。エラーのテキストを報告する。エキスパートを高速化するためにテキストを削除します。

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

//| Expert initialization function                                   |

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

int init()

  {

//---

   

//---

   return(0);

  }

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

//| Expert deinitialization function                                 |

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

int deinit()

  {

//---

   return(0);

  }

これらの機能を呼び出すのに時間がかかる--しかも、空っぽのままだ。そして、それがない方がプログラム・テキストを扱うのが楽になる。中括弧を数える。これを簡単にするために、ツールメニューにあるスタイラーを試してみて ください。空行を破棄する。

Стилизатор - Работа с исходным кодом - Разработка программ - Справка по MetaEditor
Стилизатор - Работа с исходным кодом - Разработка программ - Справка по MetaEditor
  • www.metatrader5.com
Данная функция предназначена для оформления исходного кода в соответствии с рекомендуемым стандартом. Это позволяет сделать код более читаемым, выглядящем профессионально. Грамотно оформленный код гораздо проще анализировать в последующем как его автору, так и другим пользователям. Для того чтобы запустить стилизатор, необходимо выполнить...
 

皆さん、ごきげんよう。

私は、MT-4テスターでコーディングし、テストしようとしている簡単なアイデアを持っています。

以下の条件が同時に成立した場合に、注文を出す。

1.1分間のキャンドルのオープニングで

2 欲しい値段で

3.希望の日付で

4.価格価値は、当日の価値と厳密に一致する必要があります。

例えば、27日は始値 1.2414の1分足ローソク足で

私は1)オープンローソク足で2)1.2414 3)で、しかし、27日後に続く次の日に注文を開く必要があります。

例えば、28日の1分足ローソク足は1.2438で始まりました。

私は1)オープンローソク足で2)1.2438で3)しかし、28日後の次の日に注文を開く必要があります。

例えば、12日に1分足のローソク足が1.2451で開いていました。

私は注文を開く必要がある1)オープンローソク足で2)1.2451で3)しかし、12日後の次の日。


このアイデアを実現するために、配列をテーマに勉強を始め、1次元の配列を2つ作ったのですが、うまくいきません。

上記のアイデアを実装するために、私のコードを修正していただけると幸いです。

私は鈍感なので、言葉で説明するのではなく、正しいコードを書いていただけると大変ありがたいです。

そうすれば、もっと早く理解できるはずです。

以下は私のコードです。

double mass[3]=
{
1.2414,
1.2438,
1.2451
};
int mass1[3]=
{
27,
28,
12
};
double value = NormalizeDouble( Bid,4) ;
double S = ArrayBsearch(mass,  value,  WHOLE_ARRAY,  0, MODE_ASCEND);
int value1 = Day() ;
int S1 = ArrayBsearch(mass1,  value1, WHOLE_ARRAY,  0, MODE_ASCEND);

if(Bid  == iOpen(NULL,PERIOD_M1,0))
if(Day()!= S1)
if(NormalizeDouble ( Bid,4)== S)
{
OrderSend(Symbol(),OP_SELL,0.1,Bid ,3,Ask+400*Point,Ask-200*Point,"jfh",123 );
}
 

こんにちは!このコードは、価格が上限または下限レベルを超えて移動したときにシグナルレベルを移動させることを意図していますが、それは起こりません。エラーの内容を教えてください。

/-------------------------выход цены за пределы сигнальных уровней-----------------------------------------------------------------------------------------------
if(Bid>=priceA){                                                                                   //если цена вышла за верхнею границу, то переместить сердцевину в новое положение
 ObjectsDeleteAll();
 OR=0;                                                                                             //переменная ордера обнуляется для поиска ситуации открытия новых ордеров
 }                                                                                                 
if(Bid<=priceB){                                                                                   //если цена вышла за нижнею границу, то переместить сердцевину в новое положение
 ObjectsDeleteAll();
 OR=0;                                                                                             //переменная ордера обнуляется для поиска ситуации открытия новых ордеров
 } 
 //----------------------------------------------------------------------------------------------------------------------------------------------------------------
 price=iHigh(Symbol(),PERIOD_M15,0);                                                               //Сигнальный уровень О(Сердцевина)
ObjectCreate("UrO",OBJ_HLINE,0,0,price);
ObjectSet("UrO",OBJPROP_COLOR,clrYellowGreen);                               
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
 priceA=price+30*Point;                                                                            //Сигнальный уровень А(Максимум)
ObjectCreate("UrA",OBJ_HLINE,0,0,priceA);
ObjectSet("UrA",OBJPROP_COLOR,clrDarkSlateBlue); 
//---------------------------------------------------------------------------------------------------------------------------------------------------------------- 
 priceB=price-30*Point;                                                                            //Сигнальный уровень B(Минимум)
ObjectCreate("UrB",OBJ_HLINE,0,0,priceB); 
ObjectSet("UrB",OBJPROP_COLOR,clrOrangeRed); 
 
ANDREY: 例えば、27日に始値 1.2414の1分足ローソク足があったのですが

私は1)ろうそくのオープニングで2)1.2414で3)しかし、27日後の最後の日に注文を開く必要があります。

以下は私のコードです。

まず、すでに正規化されているBIDを正規化することは、講師の指示がない限り、ほとんど合理的ではありません。

次に、その意味について。27日に価格が表示され、28日にトリガーするために、緊急で配列にデータを入力したのですか?もし、28日に何か緊急事態が発生したら?計算しにくい配列にデータを入れているんですね。データは計算可能であるべきです。EAを段階的にデバッグすることをお勧めします。1) 必要な価格を決定し、Alert()関数で表示する。正しいことが確認できたら、次のものを計算して表示する...。といった具合に、最後までデバッグが進むにつれて修正しなければならないので、あらかじめ全コードを書くのは早計です。シンプルなものから複雑なものまで、この技術についてどう思いますか?

 
vikzip: 価格が上限または下限のレベルを上回ったとき、または下回ったときにシグナルレベルを移動させるようにコードを書きましたが、これは起こりません。

ここで書かれていることを見てみましょう。まず、線が短くなること。画面への収まりがよくなり、コンパイラの動作も速くなります。

/-------------------------выход цены за пределы сигнальных уровней-------------------------------------------------
if(Bid>=priceA){                  //если цена вышла за верхнею границу, то переместить сердцевину в новое положение
 ObjectsDeleteAll();
 OR=0;                            //переменная ордера обнуляется для поиска ситуации открытия новых ордеров
 }
if(Bid<=priceB){                  //если цена вышла за нижнею границу, то переместить сердцевину в новое положение
 ObjectsDeleteAll();
 OR=0;                            //переменная ордера обнуляется для поиска ситуации открытия новых ордеров
 } 
 //----------------------------------------------------------------------------------------------------------------
BIDが大きくなれば、何かしなければならない。そして、BIDが少なければ、同じことをしなければならない。もっと短く表現すると、「価格が多ければ、あるいは少なければ、...」ということになります。
コメントで何かを動かすとか書いてるけど、やってることはオブジェクトの全削除じゃん。あなたの10行が4行に置き換わります。
if((Bid>=priceA) ||(Bid<=priceB)){     //если цена вышла за одну из ГРАНИЦ, то удалить все объекты и очистить признак поиска
   ObjectsDeleteAll();
   OR=0;                               // А это для чего?????????????????
} 

しかし!!OR記号は別のところで使うべきでしょう?このORをゼロにするのではなく、ここに新しいオブジェクトを作成したほうがよさそうです。さらに簡単なのは、オブジェクトを削除する代わりに、新しい場所に移動させるだけで、たった3行のコードで済みます。それとも、講師がもっと要求しているのでしょうか?

if((Bid>=priceA) ||(Bid<=priceB)){     //если цена вышла за одну из ГРАНИЦ, сдвинуть уровни
  ObjectSet("UrO",OBJPROP_PRICE1,iHigh(Symbol(),PERIOD_M15,0));   // Так что ли???
   Objectsset( аналогично)
   Objectsset(     )
}
単純なものから虚偽のものへ、あるいはその逆?
 
STARIJ:

まず、すでに正規化されているBIDを正規化することは、先生が指示しない限り、ほとんどお勧めできません。

次に、ここにあるものは何でしょう?27日に価格が発生し、緊急で配列にデータを入力し、28日に動作するようにするのですか?また、28日に急用ができた場合はどうするのですか?計算しにくい配列にデータを入れているんですね。データは計算可能であるべきです。EAを段階的にデバッグすることをお勧めします。1) 必要な価格を決定し、Alert()関数で表示する。正しいことが確認できたら、次のものを計算して表示する...。といった具合に、最後までデバッグが進むにつれて修正しなければならないので、あらかじめ全コードを書くのは早計です。シンプルなものから複雑なものまで、この技術についてどう思いますか?

ヒントをありがとうございました。

しかし、あなたの推論では、私が真のEAを書こうとしていることを前提にしているように思えます。

そういうわけではないことを伝えなかったのが残念です。

私は、上記のパラメーターの間に何らかの規則性、相関性があるかどうか、つまり、トルキング・エキスパート・アドバイザーの基礎となりうるアイデアを確認したり、否定したりするためにテストしようとします。

したがって、私のコードを修正し、すべてが私の上記の考えに沿うようになれば、私はあなたに感謝します。

そして、皆さんのコメントは、私がトレーディング用Expert Advisorを書くときに、もちろん役に立ちます。

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

 
ANDREY:

ご教示いただきありがとうございました。

しかし、私が思うに、あなたの推論では、私が真のEAを書こうとしていると仮定しているのではないでしょうか。

そういうわけではないことを伝えなかったのが残念です。

私は、上記のパラメーターの間に何らかの規則性、相関性があるかどうか、つまり、トルキング・エキスパート・アドバイザーの基礎となりうるアイデアを確認したり、否定したりするためにテストしようとします。

したがって、私のコードを修正し、すべてが私の上記の考えに沿うようになればありがたいのですが。

皆様のご意見は、私がトレーディング用Expert Advisorを作成する際にも、もちろん参考にさせていただきます。

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

乱入してすみませんでした。でも...トレーディング用EAと非トレーディング用EAでは、線の引き方のロジックはどのように違うのでしょうか?

仕事中、手元の時計を見るとき、家での見方と違っていることはありませんか?