[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 940

 
extern double SL=20; // SL для открываемого ордера
extern double TP=20; // ТР для открываемого ордера
extern double Lot=0.01; // Жестко заданное колич. лотов
datetime time;
//--------------------------------------------------------------- 2 --
int start()
{
int Total;

double
M_0,
M_1;


bool
Ans =false, // Ответ сервера после закрытия
Cls_B=false, // Критерий для закрытия Buy
Cls_S=false, // Критерий для закрытия Sell
Opn_B=false, // Критерий для открытия Buy
Opn_S=false; // Критерий для открытия Sell

//--------------------------------------------------------------- 3 --
// Учёт ордеров


for(int i=OrdersTotal()-1;i>=0;i--)
if (OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderType()>1)Total++;

if(Total!=0 || time==Time[1])return;


// Торговые критерии

M_0=iOsMA(NULL,0,13,34,8,0,0); // 0 бар
M_1=iOsMA(NULL,0,13,34,8,0,1); // 1 бар



if (M_1<0 && M_0>0)
Opn_B=true;

if (M_1>0 && M_0<0)
Opn_S=true;

//--------------------------------------------------------------- 7 --


if (Opn_B)
{OrderSend(Symbol(),OP_BUY,Lot,Ask,0,Bid-SL*Point,Bid+TP*Point);time=Time[1];}

if (Opn_S)
{OrderSend(Symbol(),OP_SELL,Lot,Bid,0,Ask+SL*Point,Ask-TP*Point);time=Time[1];}
}


OsMAがゼロラインを超えたらポジションを建てる EA。どこで開くのか、その理由は不明です。iOsMA(NULL,0,13,34,8,0,0) のエラーかもしれないので、誰か見てくれませんか?
 
T.H.C.:

OsMAがゼロラインを超えたらポジションを建てるEA。どこで開くのか、その理由は不明です。iOsMA(NULL,0,13,34,8,0,0) のエラーかもしれないので、誰か見てくれませんか?

すべてのダニでテストしているのでしょうか?
 
001:


返信ありがとうございました。初歩的なEAをスケッチした。それでもダメなんです。


このコードでは、エラーを探すには、OrderSend関数の F1キーを押すと、標準のエディタでヘルプを表示され、受信パラメータの順序を見て、エラーが発生します。

+ プリント/アラートで変数の値を確認し、コードセクションの ( 代入/実行 ) の後に挿入します。

そして、DoubletoSt..NormalizeDouble..TimeToStrと、出力を正規化することを忘れないようにしましょう。

kimIVによるコード付きフリーライブラリ2点を添付します。

コードはシンプルで、既製の関数もあり、初心者にはとても良い。

ファイル:
_lib2.zip  10 kb
 

// ロット数はほとんど決まっていない :)

 
T.H.C.:
はい

そうすると、ゼロバーのチャタリングが発生するんですね。
 
Vinin:

全てのダニでテスト?
はい
 

DCへの不愉快な流れを「止める」方法とは?

以下は、そのログの抜粋です。

10:00:25 旧ティック EURUSD30 1.38730/1.38740
10:00:25 旧ティック EURUSD240 1.38730/1.38740
10:00:25 旧ティック EURUSD1440 1.38730/1.38740
10:00:25 旧ティック EURUSD15 1.38730/1.38740
10:00:25 旧ティック EURUSD1 1.38730/1.38740
10:00:25 旧ティック EURUSD60 1.38730/1.38740
10:00:25 旧ティック EURUSD5 1.38730/1.38740
11:00:34 旧ティック EURUSD30 1.38847/1.38863
11:00:34 旧ティック EURUSD240 1.38847/1.38863
11:00:34 旧ティック EURUSD1440 1.38847/1.38863
11:00:34 旧ティック EURUSD15 1.38847/1.38863
11:00:34 旧ティック EURUSD1 1.38847/1.38863
11:00:34 旧ティック EURUSD60 1.38847/1.38863
11:00:34 旧ティック EURUSD5 1.38847/1.38863
11:25:06 旧ティック EURUSD30 1.38707/1.38722
11:25:06 旧ティック EURUSD240 1.38707/1.38722
11:25:06 旧ティック EURUSD1440 1.38707/1.38722
11:25:06 旧ティック EURUSD15 1.38707/1.38722
11:25:06 旧ティック EURUSD1 1.38707/1.38722
11:25:06 旧ティック EURUSD60 1.38707/1.38722

 
Vinin:

そうすると、ゼロバーのチャタリングが発生するんですね。
では、どうすればいいのか?精度の低い方法?他に方法はないのでしょうか?このEAも動くとチャラになるんでしょうか?
 

テストは頭が痛くなる?

 

//売買の基準

M_0 ={ iOsMA(0,0,13,34,8,0,1) }; //| 1bar
M_1 ={ iOsMA(0,0,13,34,8,0,2) }; //| 2bar

Opn_B ={ (((M_1<0)==1) &&((M_0>0)==1) ) };
Opn_S ={ (((M_1>0)==1) &&((M_0<0)==1)) ) };

を試してみてください。)