インテリジェント取引の特性
15766 ワード
MetaTrader 4トランザクションシステムでインテリジェントトランザクションを作成し、テストするには、以下の特性が挙げられます.
if(AccountFreeMargin() < 1000) return(0); // -
// Close // Close if(Close[1] < Close[2]) return(0);
double eur_close_m1[]; int number_copied = ArrayCopySeries(eur_close_m1, MODE_CLOSE, "EURUSD", PERIOD_M1);
Alert("FreeMargin grows to ", AccountFreeMargin(), "!");
Comment("FreeMargin is ", AccountFreeMargin(), ".");
Print("FreeMargin is ", AccountFreeMargin(), ".");
int iTickNum = 0; int iLastError = 0; ... iTickNum = OrderSend(Symbol(), OP_BUY, g_Lots, Ask, 3, 0, Ask + g_TakeProfit * g_Points); if(iTickNum <= 0)
{
iLastError = GetLastError(); if(iLastError != ERR_NO_ERROR)
Alert("Some Message"); }
呼び出し「GetLastError」関数を呼び出してエラーコードを表示し、変更値を再設定する必要があります.したがって、この関数を連続的に呼び出すと、返される値は0になります.static int prevbars = 0;
...
if(prevbars == Bars) return(0);
prevbars = Bars;
...
この方法は、履歴ロードの場合に実行できない.[直前](Previous)カラムが完了していない間に、カラムの数が変わります.この場合、これらの値の差が1に等しいことを確認できます.次に、この方法は、「Volume」の値に基づいて、以前の各カラムで生成された置換グラムの数を決定する.最初のタクトは、カラムを形成する「Volume」の値が1:if( Volume[0] > 1) return(0);
...
に等しいことを意味します.この方法は、大量のタクト入力時に実行に失敗する可能性があります.問題は,価格替克の入力時に個別の作業を行うことである.次のシフトが入ったときにこの作業が忙しい場合、入ったシフトは過負荷を避けるために入ることができません.この場合、前に保存した「Volume」を使用して検出を実行できます.第3の方法は、柱の開時間に基づいている:static datetime prevtime=0;
...
if(prevtime == Time[0]) return(0);
prevtime = Time[0];
...
この方法が最も安全な方法である.任意の条件で実行できます.int h1;
h1 = FileOpen("my_data.csv", MODE_CSV | MODE_WRITE, ";");
if(h1 < 0) { Print("Unable to open file my_data.csv");
return(false);
} FileWrite(h1, High[1], Low[1], Close[1], Volume[1]);
FileClose(h1);
コードのいくつかの説明.まず「CSV」形式のファイルを開きます.ファイルを開くときにエラーが発生すると、プログラムが呼び出されます.ファイルが正常に開いた後、ファイルの内容を消去し、データをファイルにコピーし、ファイルを閉じます.ファイルの既存の内容を保存する必要がある場合は、MODE_を使用します.READモードオープン:int h1;
h1 = FileOpen("my_data.csv", MODE_CSV | MODE_WRITE | MODE_READ, ";");
if(h1 < 0) { Print("Unable to open file my_data.csv");
return(false);
} FileSeek(h1, 0, SEEK_END);
FileWrite(h1, High[1], Low[1], Close[1], Volume[1]);
FileClose(h1);
この例では、ファイルの末尾ページにデータが追加されます.ファイルを開くと、関数「FileSeek」を使用できます.