int start()
{
if(iBarOfDayCalc(60)==22)
int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,1,Bid-1500*Point,Bid+300*Point,"jfh",123 ); //открыть ордер
return(0);
}
// фуннкцыя------------------------
//+----------------------------------------------------------------------------+
//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Версия : 26.02.2008 |
//| Описание : Возвращает расчётный номер бара от начала суток. |
//| : Нумерация баров начинается с 1 (единица). |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| tf - таймфрейм (0 - текущий таймфрейм) |
//| dt - дата и время открытия бара (0 - текущее время) |
//+----------------------------------------------------------------------------+
int iBarOfDayCalc(int tf=0, datetime dt=0) {
if (tf<=0) tf=Period();
if (dt<=0) dt=TimeCurrent();
if (tf>PERIOD_D1) {
Print("iBarOfDayCalc(): Таймфрейм должен быть меньше или равен D1");
return(0);
}
double ms=MathMod(dt/60, 1440); // количество минут от начала суток
int bd=MathFloor(ms/tf)+1; // номер бара от начала суток
return(bd);
}
こんな面白い問題にぶつかりました。
些細な条件を書きます。
,,,
AとBの価格が同じであれば、正しい条件は次のようになります。
ちょっとしたコード例を教えてください。
https://www.mql5.com/ru/code/10831
分数の数値は、比較する前に正規化する必要があります。
AとBの価格がある場合、正しい条件は次のようになります。
ありがとうございました。
私はいつもデータを正規化しているので、同じような現象に驚きました。しかし、どうやら執筆の過程や経験によってすべてが考慮されているわけではないようで、「比較するパラメーターを比較する直前に正規化する」というアドバイスは非常に有効です。すべてが安定して動作しています。
皆さん、こんばんは。
注文が開始されない理由を教えてください。
int last;
int start()
(
if (Hour( ) == 12) // TF60で12時間ローソクが形成された場合
last = iBarShift (Symbol (),0,iTime( NULL, 0, 0) ); // このローソクのNを記憶
if (last == 10) // そしてこのローソクがN10になった場合
int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,1,Bid-1500*Point,Bid+300*Point, "jfh",123 ); // 注文を開く
)
return(0)です。
iTime( NULL, 0, 0) )パラメータは 秒単位で時間を返しますが、D'04.04.2000 19:05 ' のフォーマットが必要なので、iBarShift は動作しないのだと思われます。
QUESTION 1.ローソクの開始時刻を D'04.04.2000 19:05 ' の形式で返す関数はどれですか?
確認しました。このフォーマットでは、iBarShift 機能が動作し、注文が開始されます。しかし、最初の 条件が欠落している場合にのみ動作する if (Hour( ) == 12)
質問2 if (Hour( ) == 12)の条件の後、iBarShiftが機能しないのはなぜですか?
ありがとうございました。
皆さん、こんばんは。
注文が開始されない理由を教えてください。
int last;
int start()
(
if (Hour( ) == 12) // TF60で12時間ローソクが形成された場合
last = iBarShift (Symbol (),0,iTime( NULL, 0, 0) ); // このローソクのNを記憶
if (last == 10) // そしてこのローソクがN10になった場合
int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,1,Bid-1500*Point,Bid+300*Point, "jfh",123 ); // 注文を開く
)
return(0)です。
iTime( NULL, 0, 0) ) パラメータは秒単位で時間を返しますが、D'04.04.2000 19:05 ' のフォーマットが必要なので、iBarShift は動作しないのだと思われます。
QUESTION 1.ローソクの開始時刻を D'04.04.2000 19:05 ' の形式で返す関数はどれですか?
確認しました。このフォーマットでは、iBarShift 機能が動作し、注文が開始されます。しかし、最初の 条件が欠落している場合にのみ動作する if (Hour( ) == 12)
質問2 if (Hour( ) == 12)の条件の後、iBarShiftが機能しないのはなぜですか?
ありがとうございました。
つまり、あなたは(私が正しく理解していれば)1時間枠の22番目のバーでポジションをオープン します。
つまり、あなたは(私が正しく理解していれば)1時間枠の22番目のバーでポジションをオープンします。
私の例では - まさにそう、すなわち22番目のキャンドルに。
しかし、一般的に - 私は、任意の(私が必要とするパラメータを持つ)ろうそくを覚えておきたいと思います。
そして、それ(暗記)の後にキャンドルは、所望の距離(すなわち、-5.6...100になります)で移動されます。
注文を出す
従って、私の勘違いでなければ、上記のキムの機能はおそらく使えないと思います。
というのも、ローソク足のカウントを日の初めから行い、24本でしか動作しないからです。
任意のローソクを記憶できる iBarShift 関数が必要だと思います。
(例えば、私が必要とする任意のキャンドルから50番目または100番目のキャンドルごと)。
しかし、この関数は、何らかの理由で私は動作しません(詳細は、私は最初の投稿に概説した)
。
私の質問に対する答えを見つける手助けをしていただければ幸いです。
ご参加ありがとうございました。
こんにちは、この特定のポジションを開いた後、EAコードが最初から動作することを確認する方法をアドバイスしてください、私が行うとき
if (ticketbuy>0)
{
を返します。
}
他の条件ではそれ以上注文を開けないので、何度か注文を開けないといけない。あと何回か注文を開けないといけません。 ありがとうございました。
インジケータ・バッファが十分にあれば、オブジェクトなしでも可能
しかし、どのように?インジケータがウィンドウ化されている場合、どのようにチャート上に矢印を表示するのですか? 私は4つのバッファしか使用していません。
こんにちは、進行中の話にお邪魔してすみません...あなたが分を持っている場合...私は上下に矢印を描画する指標を持っている私はそれを行うにはExpert Advisorを必要とする私はちょうどmkuellと指標を学んでいると言うことができる対処していません。
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 ブルー
#property indicator_color2 レッド
//---- 入力パラメータ
extern int NumBars=500;
//---- バッファ
double ExtMapBuffer1[]。
double ExtMapBuffer2[]。
見開き2ページ
誰かテンプレート持ってないかな
どなたかご存知の方、アドバイスお願いします。Forex4youのGepard 5.0 Expert Advisorは、大きなマイナスでいくつかのトレードを開いています。どこで調整できるのですか?