Помогите исправить ошибку в коде советника. Попытался написать советник на основе индикатора Laguerre.mq4. При компиляции выдает ошибку. Место ошибки в коде выделено жирным. Сам индикатор находится в теле советника.
CU = 0; CD = 0; if (L0[i] >= L1[i]) CU = L0[i] - L1[i]とする。 さもなくば CD = L1[i] - L0[i]とする。 if (L1[i] >= L2[i]) CU = CU + L1[i] - L2[i]である。 さもなくば CD = CD + L2[i] - L1[i]とする。 if (L2[i] >= L3[i]) CU = CU + L2[i] - L3[i]です。 さもなくば CD = CD + L3[i] - L2[i]である。
if (CU + CD != 0) Filter[i] = (L0[i] + 2 * L1[i] + 2 * L2[i] + L3[i]) / 6.0; } return(0)です。
//+------------------------------------------------------------------+ //| エキスパートスタート機能 //+------------------------------------------------------------------+ int start() { if (注文合計()>0) { CU = 0; CD = 0; { OrderSelect(SELECT_BY_POS); if (OrderSymbol()==Symbol()) { if (OrderType()== OP_BUY) { if ((L0[i] >= L1[i])CU = L0[i] - L1[i],(L1[i] >= L2[i])CU = CU + L1[i] - L2[i],(L2[i] >= L3[i])。 OrderClose(OrderTicket(),OrderLots())です。 else CU++; } if (OrderType()== OP_SELL) { if (CD = L1[i] - L0[i],CD=CD+L2[i]-L1[i],CD=CD+L3[i]-L2[i])とする。 オーダークローズ(OrderTicket(),OrderLots()) さもなければCD++。 } } }
if (CU > CD && CU == 0) { OrderSend(Symbol(),OP_BUY,lots,Ask,0/*(Ask-StopLoss*Point)*/,0,); } if (CU < CD && CD ==0) { OrderSend(Symbol(),OP_SELL,lots,Bid,0/*(Bid+StopLoss*Point)*/,0,); }
コードにどのように実装すればいいのかがわからないのですが、どこかにレディメイドのコードはありませんか?1.すべてのオープンオーダーに対して 2.買いオーダーのみ 3.売りオーダーのみ の3方向でブレークイーブンを計算するコードならOKです。
AccountFreeMarginModeの 値が異なる場合の証拠金(ロットNの注文を出すのに必要な資金)の計算方法について。
こんにちは。
どなたかご存知の方がいらっしゃいましたら、アドバイスいただけないでしょうか。
テスターでも実機でも、乖離率2ポイントでも、市場価格、つまり乖離率0でも EAが動きますが、問題は ないのでしょうか?通信は良好で、光ファイバーは実に60Mbit、手動で開くだけなら、実行は実に1〜2秒です。私のExpert Advisorには、注文が正常に開くまでリプレイがあります。今まで4桁のプラットフォームで取引していたので、5桁のプラットフォームを試したいので質問させていただきました。5桁のデモで試しましたが、注文は開かず、シグナルはただ「注文を開こうとしています」と表示され、それきりでした。ログに変更やエラーはありません。何かアドバイスはありますか?
個人的な経験ですが、注文を開始(決済)する際、市場価格から何ポイント乖離させればよいのでしょうか?小数点以下5桁で取引する場合、EAに何か規定が必要ですか? テスターで注文を出すと、SLとTPがちょうど10倍、小数点以下1桁になるのですが?
追伸:MQL4用のEAを自分で書きました。
敬具
編集可能なファイル<indicator.mq4>をどこかに移動させるか、別の名前でコピーして何かしたのですが、コンパイル後、ターミナルのインジケータ一覧で、名前がグレーになり、非アクティブになってしまいました。
ただし、インジケーターは左ウィンドウバーの「リストツリー」のサイドメニューから利用でき、チャート上にドラッグして利用します。
このような状況に遭遇したことがある方は、その改善策をアドバイスしてください。
敬具
編集可能なファイル<indicator.mq4>をどこかに移動させるか、別の名前でコピーして何かしたのですが、コンパイル後、ターミナルのインジケータ一覧で、名前がグレーになり、非アクティブになってしまいました。
ただし、インジケーターは左ウィンドウバーの「リストツリー」のサイドメニューから利用でき、チャート上にドラッグして利用します。
このような状況に遭遇したことがある方は、修正方法をアドバイスしてください。
ターミナルでインデントのグレー色を右クリック→メニュー「変更」で左クリック→メタエディターでコンパイル→ターミナルをリロードして人生を楽しむ...:-)
ターミナルでインジケーターのグレー色を右クリック→メニュー「変更」で左クリック→メタエディターでコンパイル→ターミナルを再読み込みして人生を楽しむ...:-)
それはないでしょう。ソースは失われている。
今日、私のEAで同じ手順を行いましたが、その色はターミナルで青に変わり、グレーでした。
今日、私のEAで同じ手順を行いましたが、その色はターミナルで青に変わり、グレーでした。
Помогите исправить ошибку в коде советника. Попытался написать советник на основе индикатора Laguerre.mq4. При компиляции выдает ошибку. Место ошибки в коде выделено жирным. Сам индикатор находится в теле советника.
//+------------------------------------------------------------------+
//|Laguerre+.mq4||Laguerre+.mq4||Laguerre+.mq4
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
//---- 入力パラメータ
extern int TrailingStop=0;
extern int StopLoss=0;
extern double lots=0.1;
extern double gamma = 0.7;
extern int Price_Type=0;
//---- バッファ
double Filter[];
double L0[]です。
double L1[];;
double L2[]。
double L3[]です。
//+------------------------------------------------------------------+
//| カスタムインジケータ初期化関数
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(5)です。
//---- インジケータ
SetIndexStyle(0, DRAW_LINE)を設定します。
SetIndexDrawBegin(0, 1)を設定します。
SetIndexLabel(0, "LaguerreFilter")を設定します。
SetIndexBuffer(0,Filter)を設定します。
SetIndexBuffer(1, L0)を設定します。
SetIndexBuffer(2, L1)を設定します。
SetIndexBuffer(3, L2)を設定します。
SetIndexBuffer(4, L3)を設定します。
//----
string short_name="LaguerreFilter(" + DoubleToStr(gamma, 2) + ")";
IndicatorShortName(short_name)。
return(0)です。
}
//+------------------------------------------------------------------+
//| カストマーインジケーター初期化機能
//+------------------------------------------------------------------+
int deinit()
{
return(0)です。
}
//+------------------------------------------------------------------+
//| カスタムインジケータ反復関数
//+------------------------------------------------------------------+
int start()
{
int制限。
int counted_bars = IndicatorCounted();
ダブルCU、CD
//---- 最後にカウントされたバーが再カウントされます。
if (counted_bars>0)
counted_bars--。
さもなくば
counted_bars = 1;
limit = Bars - counted_bars;
//---- RSIの計算
for (int i=limit; i>=0; i--)
{
double Price=iMA(NULL,0,1,0,0,Price_Type,i);
L0[i] = (1.0 - gamma)*Price + gamma*L0[i+1];
L1[i] = -gamma*L0[i] + L0[i+1] + gamma*L1[i+1] とする。
L2[i] = -gamma*L1[i] + L1[i+1] + gamma*L2[i+1] とする。
L3[i] = -gamma*L2[i] + L2[i+1] + gamma*L3[i+1] です。
CU = 0;
CD = 0;
if (L0[i] >= L1[i])
CU = L0[i] - L1[i]とする。
さもなくば
CD = L1[i] - L0[i]とする。
if (L1[i] >= L2[i])
CU = CU + L1[i] - L2[i]である。
さもなくば
CD = CD + L2[i] - L1[i]とする。
if (L2[i] >= L3[i])
CU = CU + L2[i] - L3[i]です。
さもなくば
CD = CD + L3[i] - L2[i]である。
if (CU + CD != 0)
Filter[i] = (L0[i] + 2 * L1[i] + 2 * L2[i] + L3[i]) / 6.0;
}
return(0)です。
//+------------------------------------------------------------------+
//| エキスパートスタート機能
//+------------------------------------------------------------------+
int start()
{
if (注文合計()>0)
{
CU = 0;
CD = 0;
{
OrderSelect(SELECT_BY_POS);
if (OrderSymbol()==Symbol())
{
if (OrderType()== OP_BUY)
{
if ((L0[i] >= L1[i])CU = L0[i] - L1[i],(L1[i] >= L2[i])CU = CU + L1[i] - L2[i],(L2[i] >= L3[i])。
OrderClose(OrderTicket(),OrderLots())です。
else CU++;
}
if (OrderType()== OP_SELL)
{
if (CD = L1[i] - L0[i],CD=CD+L2[i]-L1[i],CD=CD+L3[i]-L2[i])とする。
オーダークローズ(OrderTicket(),OrderLots())
さもなければCD++。
}
}
}
if (CU > CD && CU == 0)
{
OrderSend(Symbol(),OP_BUY,lots,Ask,0/*(Ask-StopLoss*Point)*/,0,);
}
if (CU < CD && CD ==0)
{
OrderSend(Symbol(),OP_SELL,lots,Bid,0/*(Bid+StopLoss*Point)*/,0,);
}
//----
return(0)です。
}
//+------------------------------------------------------------------+