問題は、インジケーターがシグナルを発したときに注文を開始したいということです。どうやってやるの?
私はやろうとしてきましiCustom()
たが、満足のいくものではありません。
EAGlobalVariableSet()
でインジケーターとメソッドを使用しようとしましたが、正しく動作しません。GlobalVariableGet()
助けてください。
問題は、インジケーターがシグナルを発したときに注文を開始したいということです。どうやってやるの?
私はやろうとしてきましiCustom()
たが、満足のいくものではありません。
EAGlobalVariableSet()
でインジケーターとメソッドを使用しようとしましたが、正しく動作しません。GlobalVariableGet()
助けてください。
構文は次のとおりです。
int signal = iCustom(NULL, 0, "MyCustomIndicatorName",
...parameters it takes in...,
...the buffer index you want from the custom indicator...,
...shift in bars);
「myMA」と呼ばれるカスタム移動平均インディケータを作成し、外部変数の 1 つとしてピリオドのみを使用するとします。このインジケーターは、ユーザーが指定した期間と各バーの終値に基づいて単純移動平均を計算します。この指標は、計算された値を次のMAValues[]
ようにインデックスに割り当てられる配列に保存します。SetIndexBuffer(0, MAValues);
期間 200 の現在のバーの移動平均を取得するには、次のように記述します。
double ma_current_bar = iCustom(NULL, 0, "myMA", 200, 0, 0);
次に、この値を取得したら、決定したいくつかの取引基準に対してそれをチェックし、それが満たされたときに注文を開くことができます。たとえば、現在の足の移動平均が現在の売値と等しい場合にロング ポジションを開きたい場合は、次のように記述します。
if (ma_current_bar == Ask){
OrderSend(Symbol(), OP_BUY, 1, Ask, *max slippage*, *sl*, *tp*, NULL, 0, 0, GREEN);
}
これは単なるサンプル コードです。ライブ EA では使用しないでください。
構文は次のとおりです。
double iCustom(
string symbol, // symbol
int timeframe, // timeframe
string name, // path/name of the custom indicator compiled program
... // custom indicator input parameters (if necessary)
int mode, // line index
int shift // shift
);
カスタム アリゲーター インジケーターを使用した例を次に示します (これはAlligator.mq4
、MT プラットフォームのようにデフォルトで使用できるはずです)。
double Alligator[3];
Alligator[0] = iCustom(NULL, 0, "Alligator", 13, 8, 8, 5, 5, 3, 0, 0);
Alligator[1] = iCustom(NULL, 0, "Alligator", 13, 8, 8, 5, 5, 3, 1, 0);
Alligator[2] = iCustom(NULL, 0, "Alligator", 13, 8, 8, 5, 5, 3, 2, 0);
インジケータ自体で定義されて13, 8, 8, 5, 5, 3
いるカスタム Alligator の対応する入力パラメータは次のとおりです。
//---- input parameters
input int InpJawsPeriod=13; // Jaws Period
input int InpJawsShift=8; // Jaws Shift
input int InpTeethPeriod=8; // Teeth Period
input int InpTeethShift=5; // Teeth Shift
input int InpLipsPeriod=5; // Lips Period
input int InpLipsShift=3; // Lips Shift
そしてmode
、インジケータで次のように定義された対応するライン インデックスです。
SetIndexBuffer(0, ExtBlueBuffer);
SetIndexBuffer(1, ExtRedBuffer);
SetIndexBuffer(2, ExtLimeBuffer);