Expert Advisorでスクリプトを実行する - ページ 2

 
Shaun:

実を言うと、私はこのサイトもコーディングも初めてなんです。コーディングは初めてです。
ここから スタート
 
qjol:
ここから スタート

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

正直なところ、私はトレーダー/コーディングフォーラムに来たのは、すでにそれをやっていて、おそらく私を助けることができる誰かから答えを得るためであり、ゼロから自分ですべてをコーディングする方法を学ぶためではありません。

 
Shaun:

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

正直なところ、私はトレーダー/コーディングフォーラムに来たのは、ゼロから自分ですべてのコードを書く方法を学ぶのではなく、すでにそれをやっていて、おそらく私を助けることができる誰かから答えを得るためです。

あなたのスクリプトを見せ、あなたのEAを見せれば、誰かがあなたに同情して、それらを組み合わせてくれるかもしれません... ...
 
Shaun:

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

正直なところ、私はトレーダー/コーディングフォーラムに来たのは、ゼロから自分ですべてのコードを書く方法を学ぶのではなく、すでにそれをやっていて、おそらく私を助けることができる誰かから答えを得るためです。

そうですね、あなたのコードを見せてください、そして私たちはあなたを助けようとしますが、もちろんあなたは私があなたのためにすべてのコードを行うことを期待していないと確信しています。
 

ありがとうございます。

皆さんのアドバイスに従って、EA内にこのようなものを書きました。

if(MyCondition)
{
  PlaySound("my_alert.wav");
    if(MessageBox("Do you really want to run the script?", 0, MB_YESNO|MB_ICONQUESTION)!=IDNO)
     { 
      MyScript();
      DisableAllEA();
      Sleep(3000);    
     }
  }

MyConditionで定義された特定の状況下で、アラートを再生し、何が起こっているのか確認する必要があることを知らせる。

メッセージボックスがポップアップして、スクリプトを実行するかどうか尋ねてきます - これはすべてのポジションを閉じるスクリプトです。

YES]ボタンをクリックすると、スクリプトが実行され、すべてのポジションがクローズされ、MT4の[Experts]ボタンが無効になります。

もちろん、特別な理由がない限り、Expertsを無効にする必要はありません。

次のループでEAが条件を見つけない場合、スクリプトはトリガーされません。

もちろん、これはあくまで回避策であり、EAがすべてのティックで ループし続けるので、完全な解決策ではありません。

また、スクリプトはEAの中にあり、単独ではないので、スクリプトが実行されるまで、Expertsを無効にすることはできません。

追伸

この機能を実現するためには、EAの冒頭に以下を記述する必要があります。

#include <WinUser32.mqh>
 

別の解決策を思いつきました!!!

スクリプトにショートカットキー(HOTKEY)を割り当てることができます。

そうすれば、キーボードイベントをエミュレートすることができます。

だから、もっといい。

if(MyCondition)
{
      EnableScript();
      DisableAllEA();
      Sleep(3000);
}

スタンドアローンのスクリプトとメッセージボックスの中にalert.wavを入れることができるのです。

また、Expertsを有効にするかどうかは、その場の状況に応じて決めることができます。

こうすることで、オーバースタックのリスクを回避することができます。

もちろん、これにはキーイベントに関するさらなる研究が必要です。

Ctrl+Eのキーボードイベントの機能は、以下の通りです。

void DisableAllEA() {
   keybd_event(17, 0, 0, 0); // CTRL down
   keybd_event(69, 0, 0, 0); // E down
   keybd_event(69, 0, 2, 0); // E up
   keybd_event(17, 0, 2, 0); // CTRL up
}

少しググれば、すべてのキーの番号コードが見つかります。

あるいは、このリンクを使うこともできます: https://www.mql5.com/en/code

もちろん、keybd_eventはmql4の一部ではないので、必要なのはそのためです。

#include <WinUser32.mqh>
 

ところで!

EAをチャート上にインジケーターとして実装するのに苦労した人はいますか?

同じように動作するはずです!

そして、1つのチャートにいくつでもインジケータを走らせることができるのです!

私はスクリプトをインジケータとして実装してみたことがありますが、これはうまくいきましたよ。

 
Dadas:

ところで!

EAをチャート上にインジケーターとして実装するのに苦労した人はいますか?

同じように動作するはずです。


スクリプトとEAのみで、インジケータからトレードを行うことはできません。
 
RaptorUK:

インジケーターからの取引はできず、スクリプトとEAからの取引のみです。


では、EAはスクリプトとして実行できるのでしょうか?ループで?

ただ、無限ループの場合、コンピュータは最終的にクラッシュします。

50ms毎とか、そういうティッカーで制御された ループでスクリプトを起動させる方法はありますか?

MT4のティックではなく?

 
RaptorUK:

また、スクリプトとEAのみで、インジケーターから取引を行うことはできません。


そしてもう一つ思ったことがあります。

キーボードイベント機能を使って、Scriptで発注することができるのですね。

1.自動的に注文を出すScriptを書く。

2.それにHOTKEYを割り当てる。

3.3. Indicatorとして動作するEAで、キーボードイベントを定義する。

その後、同じように注文を閉じることができます。

これで完成です。EAがIndicatorとして動作し、その機能を発揮しています。

この方法の唯一の欠点は、キーボード・イベントでIndicatorを無効にすることができないことで、チャートから手動で削除することしかできません。