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

 
Valeriy Yastremskiy:

先にチケットのオーダーセレクトが行われました。注文は保留されています。1ティックごとに注文の種類を 確認する以外に、成行注文にする方法。ログでは、この時間は記録されていますが、注文構造のこの時間のフィールドは提供されていないようですが、私の勘違いでしょうか?注文タイプを変更しても、OrdersTotal()とOrdersHistoryTotalも変更されないのですが、私の理解が正しいのでしょうか?

それ以外はある程度クリアしていると思います)

OrderOpenTimeは試されましたか? ポジションがトリガーされたときに変わるかどうかも覚えていません。

保留中の注文がトリガーされたかどうかをティック 毎(キーアクションの前や1~5分毎ではない)に確認する必要があるのはいつなのか分かりませんが、MT4には他に方法がありません。

MT5ではもっと便利です。OTTではトランザクションについて調べ、リストで作業する必要がある場合はOTTで処理を行います。

 
datetime some_time=TimeCurrent();

extern string Symbol3 = ""; //Инструмент (""текущий по умолчанию)

extern double P=15;       //Таймфрейм

int start()

{

//Инициализация переменных

bool  FractalsUp=false;

bool  FractalsDown=false;

int   FractalsUpPrice=0;

int   FractalsDownPrice=0;

int   FractalsLimit=100;

double EMA=iMA(NULL,P,5,3,MODE_EMA,PRICE_CLOSE,0);

   //Цикл сканирования последних свечей FractalsLimit, начиная с самых старых и заканчивая самыми последними.

   for (int i=FractalsLimit; i>=0; i--)

{

      //Если на свече есть фрактал, значение будет больше нуля и будет равно самой высокой или самой низкой цене.

      double fu=iFractals(NULL,0,MODE_UPPER,i);

      double fl=iFractals(NULL,0,MODE_LOWER,i);

      //Если есть верхний фрактал, я сохраняю значение и устанавливаю true для переменной FractalsUp.

      if(fu>0)

{

FractalsUp=true;

FractalsDown=false;

FractalsUpPrice=fu;



if (((Close[0])>fu)&&(OrdersTotal() == 0)&&(Close[0]>Open[0])&&(Close[0]>High[1]&&(Close[0]>EMA))) 

{  

if ((OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS, MODE_HISTORY)==true))

{

datetime Cd=OrderCloseTime();

int hd=+iBarShift(Symbol3,P,Cd)+1;

if (hd<=2)

{

return(-1);

}

}



metka1();

}

}

//Если есть нижний фрактал, я сохраняю значение и устанавливаю true для переменной FractalsDown.

      if(fl>0)

{

FractalsUp=false;

FractalsDown=true;

FractalsDownPrice=fl;

if (((Close[0])<fl)&&(OrdersTotal() == 0)&&(Close[0]<Open[0])&&(Close[0]<Low[1]&&(Close[0]<EMA))) 

{  

if ((OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS, MODE_HISTORY)==true))

{

datetime Cd1=OrderCloseTime();

int hd1=+iBarShift(Symbol3,P,Cd1)+1;

if (hd1<=2)

{

return(-1);

}

}

metka2();

}

}

      //Если свеча имеет верхний и нижний фрактал, значения сохраняются, но мы не считаем его последним фракталом.

      if(fu>0 && fl>0)

{

         FractalsUp=false;

         FractalsDown=false;

         FractalsUpPrice=fu;        

         FractalsDownPrice=fl;

}

}

return(0);

}

int metka1()

{              

int send1=OrderSend(Symbol3,OP_BUY,0.01,Ask,3,Bid-70*Point,Bid+70*Point);

return(0);

}

int metka2()

{                        

int send2=OrderSend(Symbol3,OP_SELL,0.01,Bid,3,Ask+70*Point,Ask-70*Point);

return(0);

}

こんにちは。

フラクタルでフクロウを制作しています。問題があるのです。助けてください。本質はこうだ。

このスクリプトは、[FractalsLimit=100;]という変数で、過去100本のローソク足から最後のトップまたはボトムのフラクタル値を検索し、フラクタル値が突破されたら買いポジションをオープン し、逆の場合は売りポジションをオープンします。

過去100本のローソク足から最大または最小のフラクタルを見つけ、ポジションを建てる必要があります。つまり、最大と最小のフラクタルにのみ注目し、最後のフラクタルには注目しない。

Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
Aleksey Mavrin:

OrderOpenTimeは試されましたか? 保留注文が発生したときに変わるかどうかは覚えていません。

保留中の注文がトリガーされたかどうか、毎ティック(キーアクションの前や1...5...分ごとではない)チェックする必要があるのか分かりませんが、MT4では他に方法がないのでしょうか。

MT5ではもっと便利です。OTTではトランザクションを行うことを学び、リストを扱う必要がある場合はOTTで処理を行うことになります。

OrderOpenTime は、保留中の注文が開始された時刻を示します。もっと操作を理解してほしいということです。そのため、時刻はログとジャーナルに書き込まれ、他の場所には表示されない。敬称略、直していないなら、後で見ることができる、とのことです))))

私の理解が正しければ、MT5でポジション/取引を開始 することになります。オーダー/トレード/ポジションに分けるのは最適解として理解できないが、もちろんもっとデータはある。

 
Aleksey Mavrin:

あるある)1は英字のl iなどの背景に埋もれてしまうので、接尾辞001、2...などと呼ぶと便利です。

なるほど、そういうことだったのか)と思い、修正しました。現在、2つ目のハンドルの値は1,0です。第1ハンドルに第2ハンドルより大きなタイムフレームを入れると、第2ハンドルの値は0になります。2つ目のハンドルの値を正しくするために、他に何を修正すればよいか教えてください。

void OnTick()
  {
   double PriceArray[];
   
   int AOhandle = iAO(_Symbol,PERIOD_M15);
   
   ArraySetAsSeries(PriceArray, true);
   
   CopyBuffer(AOhandle, 0, 0, 3, PriceArray);
   
   double AOvalue = NormalizeDouble(PriceArray[0], 6);

   double PriceArray01[];
   
   int AOhandle01 = iAO(_Symbol,PERIOD_H1);
   
   ArraySetAsSeries(PriceArray01, true);
   
   CopyBuffer(AOhandle01, 1, 0, 3, PriceArray01);
   
   double AOvalue01 = NormalizeDouble(PriceArray01[0], 6);
    
   Comment ("Awesome Oscillator Value: ", AOvalue, "\n", "\n",
            "Awesome Oscillator Value: ", AOvalue01);
  }
 
Valeriy Yastremskiy:

OrderOpenTime は、保留中の注文の開始時刻を示します。もっと操作を理解してほしいということです。ログとジャーナルに時間が記録され、どこにも反映されないことが判明した。従って、もし修正していないのであれば、その事実に従って、後で調べることができます))))

1週間前からこの問題を提起していましたね。 私は、取引戦略における発注の原則を見直すことを提案しました

が、この問題が重要であれば、1ティックの裁量で「修正」しても問題ないでしょう。

試してみるなら、それなりのスピードでやるしかないのですが、リアルティクでないと、保留注文を出すスピードが格段に速いので、エラーが多発してしまうのでしょうね。


私が研究を提案したいのは、CArrayInt SB https://www.mql5.com/ru/docs/standardlibrary/datastructures/carrayint です。

CArrayIntでチケットを追加し、このデータ型により「市場に出たチケット」を簡単に削除することができます。


精度-1ティックと書きましたが、チェックコードは最小になります。

Valeriy Yastremskiy:

MT5では、私が正しく理解していれば、それはポジション/取引開始と なります。最適解としてのオーダー/ディール/ポジションという分け方は理解できないが、もちろんもっとデータはある。

MT4とMT5の比較は意味がない。MT4は参入しやすいが、MT5の方が機能が多い

 
Igor Makanu:

1週間前からこの問題を提起しているので、私は取引戦略における注文の配置の原則を再考するよう提案しました。


まだ理解できていない。もちろん、戦略も違います。かなり重要なイベントがログにしか反映されないことに疑問を感じているのです。また、注文が成約になった時刻のログ以外はどこにもないと、誰も直接答えてはいない))))

また、ストラテジーのロジックは端末に依存しない。理屈がいい加減なら、確かに作り直せばいいのですが、ぐずぐずは治らないのです)))

 
Valeriy Yastremskiy:

不明なままです。もちろん、戦略も違います。かなり重要なイベントがログにしか反映されないことに疑問を感じています。そして、注文が成行となった時刻のログ以外にはどこにもないと、誰も直接答えていない))))

この情報はダメだーーーーーーーーーーーーーーーーーーーー

重要性...まあ、それはあなたにとって重要ですが、その前に、何年ストラテジーを書いて、それがどのように機能したか、利益であっても;)。

原則として、待機注文 を多く出さず、成行注文に従う。必要であれば、待機注文を追加する - 待機注文は成行注文になる

平均化、ピラミッド化、オーダーグリッドなど、あらゆる方法を駆使しています。とたくさん...私はトレーダーフォーラムでこれらのふざけたことを覚えていない、私はもう1年以上それらを読んでいない - 私は他の人よりも自分の考えを持っている ))) 。

 
Igor Makanu:

そんな情報はないーーーーーーーーーーーーーーーーーーーーーーーー

重要性...まあ、それはあなたにとって重要である、その前に、どのように多くの年の戦略を書いて、それも利益で、働くだろう;)。

原則として、多くの注文は 出さず、成行注文に従う。必要であれば、注文を追加する。

平均化、ピラミッド化、オーダーグリッドなど、あらゆる方法を駆使しています。とたくさん...あなたが知らない場合は、トレーダーフォーラムでこれらのトリックを読んでください、私は1年以上それをやっていない - 私は他の人よりも自分のより多くの考えを持っている ))) 。

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

マーチンと平均化は自己欺瞞であり、禁止事項である(BP特性の定義によるリスクの計算も予測もできないため))))) リスクは、時に、しかし時にのみ、正当化される))))

戦略が正しければ、1回の注文で十分です))))

 
Valeriy Yastremskiy:

戦略が正しければ、注文は1回で十分です))))

TSで注文数が 厳密に設定されている場合、現在のティックで保留中の注文に何が起こったかを判断することに問題はないはずです。

正確な時間を知っても何も得られない - すべての情報はティック到着時に受け取る - ティックなし、情報なし

 

こんにちは、私はEAからカスタムインジケータの パラメータを変更する方法に問題に直面しています。問題は、インジケータのリストのパラメータを変更すると、新しいコピーが作成されることです。 これらのコピーのプロパティを表示すると、各コピーに独自のパラメータがあります。パラメータを変更すればするほど、コピーが作成される。iCustom経由で使っています。

例えば、こんな感じです。

#resource "㊧Indicators.ex4"

extern Var1=1;

//------------------------------------------

void OnTick()

{

int A;

Var1++です。

A=iCustom(Symbol(),PERIOD_CURRENT,"::Indicators Filterindicator",Var1,0,0).PERIOD_CURRENT,"::Indicators Filterindicator,"::Indicators Filterindicator,"::Var1,0,0);

その結果、指標の一覧で見ることができます。

指標(パラメータ Var1=2 の場合)

指標(パラメータ Var1=3 の場合)

インジケータ(パラメータVar1=4の場合)

....など


理由: