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

 
Valeriy Yastremskiy #:
そんなものはない。これは手続き的な言語ではありません。ここでは、トップダウンのプログラムを徹底しています。そして、関数呼び出しは、ループがあればすべて解決します。AND OOP)
了解です。了解です。分かりやすい説明ありがとうございます。
 
Tretyakov Rostyslav #:

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

 
Tretyakov Rostyslav #:

ハイ

    if(OrderSelect(FindTicketOrder(), SELECT_BY_TICKET,MODE_TRADES)) 
    { 
      if(OrderProfit()<=-x);
        {
         OrderClose(FindTicketOrder(),OrderLots(),OrderClosePrice(),iSlippage,clrPink);
        }
    } 
  else 
    Print("OrderSelect() вернул ошибку - ",GetLastError());

チケットに利食い注文を出したが、-xになったら決済したい。

しかし、私はすべての注文を連続でクローズしてしまうのです。

正しい方法を教えてください。

 
Alexander Avksentyev #:

ハイ

チケットに利食い注文を出したが、-xになったら決済したい。

しかし、私はすべての注文を連続でクローズしてしまうのです。

正しい方法を教えてください。

こんな風にやってみよう

 int min_ticket=FindTicketOrder();
    if(OrderSelect(min_ticket, SELECT_BY_TICKET,MODE_TRADES)) 
    { 
      if(OrderProfit()<=-x);
        {
         OrderClose(min_ticket,OrderLots(),OrderClosePrice(),iSlippage,clrPink);
        }
    } 
  else 
    Print("OrderSelect() вернул ошибку - ",GetLastError());

一般的には、機能全体を理解した上で開発する必要があります

//+------------------------------------------------------------------+
void Функция()
  {
   ...твой код, возможные ошибки;
  }
//+------------------------------------------------------------------+
 
Alexander Avksentyev #:

ハイ

チケットに利食い注文を出したが、-xになったら決済したい。

しかし、私はすべての 注文を連続でクローズしてしまうのです。

正しい方法を教えてください。

OrderCloseコールが1つしか表示されない場合、すべての注文をクローズさせるにはどうすればよいですか?

このコードがどこに呼ばれているのかさえ、あまり明確ではありませんが...。ロボットのアルゴリズムも不明...。
 
Mihail Matkovskij #:

OrderCloseコールが1つしか表示されない場合、すべての注文をどのようにクローズするのですか?

注文がオープンされると同時にクローズされる

 
Tretyakov Rostyslav #:
それはあなたが望んでいたことではなく、一例です。半自動売買のEAを作っていました。 。


欲しいものは自分で書かなければならない)。

何かあれば、手伝いますよ。

そこで、このようなFast Pending Orders Panel EAに必要なものを具体的に説明します。このリストから部分的にコードの一部を見つけました(20%)。


1)シェル:チャート上のボタンでそのようなボードとして表示:BUY_lp(下アスクで__pips)、SELL_hp(高い入札で__pips) - ボード上の手動で入力ピップ数、BUY_lt(下アスク最大_秒)、SELL_ht(高いBID最大_秒) - ボード上の手動入力秒で数、CLOSE_buy、CLOSE_sells - すべての命令を終了します。

a) チャート上にボタンを作成するコード。スコアボードを背景オブジェクトとして使用します。

b) このスコアボードに値を入力するためのコード (pips、seconds) このための特別なフィールド

c) ボタン押下後に価格が確定し、エントリーしたい価格に対するpips数を加減した値を、あるメモリファイルに保存すること。

d) 秒の値をあるメモリファイルに保存し、そこで選択された「秒の」期間の価格の最小値/最大値を連続的にカウントすること。

2)内側:実行。

a) BUY_lpまたはSELL_hpボタンを押した後、ファイルからpips単位の値と固定価格を読み取り、現在の価格と比較する。

b) BUY_ltまたはSELL_htボタンが押されると、秒単位の値と変更された最大/最小価格がファイルから読み込まれ、現在の価格と比較されます。

c) 現在の価格が必要な値に達したとき - 市場に参入する(オープンオーダー)。

d) 注文を閉じる、またはすべての注文を閉じるボタン。 このボタンは執行モードによって異なる機能を持つべきである。もし価格が「pips」で入力されたなら、同じpips数だけ閉じた後、終値は「より良い」方向に異なるべきである(「閉じる」を押した後その価格を待つ)、もしボタンが「秒単位」なら、一定期間ベスト価格を計算すべきである(その価格まで待つ、ただしボタンを押した瞬間には低くない/高くない)。

 
Alexander Avksentyev #:

注文が始まると同時にクローズする

そうですね、スプレッドがあるのでエントリーした瞬間に必ず利益がマイナスになりますね...。xの値を小さくしてみてください。

また、利益をpipsで計算する機能を自作した方が良いと思います(もちろん、入金通貨で設定したくない場合)。
 
Mihail Matkovskij #:

そうですね、スプレッドがあるので、エントリー時には必ずプロフィットがマイナスになりますね...。xの値を小さくしてみてください。

-x スプレッドより小さい場合、Print に出力

if(OrderProfit()<=-x);

は、条件が一致すれば真になります。

 
Mihail Matkovskij #:

そうですね、スプレッドがあるため、エントリーした瞬間に必ず利益がマイナスになりますね...。xの値を小さくしてみてください。

また、利益をpipsで計算する機能を自作した方が良いと思います(もちろん、入金通貨で設定しない場合)。

ポイントでやっても大差ない。もっとシンプルにしたかった