[アーカイブ!】どんなルーキーの質問でも、フォーラムを散らかさないように。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 2. - ページ 69

 
どなたか、私の前の投稿(67ページ)を見てください。エラーが見つかりません -保留注文が 設定されていません。
 
nemo811:
どなたか、私の前の投稿(67ページ)を見てください。エラーが見つかりません - 保留注文が設定されていません。

間違いではありません。もっと気をつけたほうがいい。

#property copyright "Copyright © 2010, Хлыстов Владимир"
#property link "cmillion@narod.ru"
#property show_inputs
//--------------------------------------------------------------------
extern int stoploss = 0; //уровень выставления SL, если 0, то SL не выставляется
extern int takeprofit = 0; //уровень выставления TP, если 0, то TP не выставляется
extern int Magic = 123456; //уникальный номер ордера
extern bool BUY = false; //открыть ордер BUY
extern bool SELL = false; //открыть ордер SELL
extern bool BUYSTOP = false; //открыть ордер BUYSTOP
extern bool SELLSTOP = false; //открыть ордер SELLSTOP
extern double Lot = 0.1; //объем ордера
extern int slippage = 3; //Максимально допустимое отклонение цены для рыночных ордеров
//--------------------------------------------------------------------
double SL,TP;
//--------------------------------------------------------------------
int start()
{
if (BUY)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); else SL=0; 
OPENORDER ("Buy");
}
if (SELL)
{ 
if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits); else SL=0; 
OPENORDER ("Sell");
}
if (BUYSTOP)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); else SL=0; 
OPENORDER ("Buy Stop");
}
if (SELLSTOP)
{ 
if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits); else SL=0; 
OPENORDER ("Sell Stop");
}
return(0);
}
//--------------------------------------------------------------------
void OPENORDER(string ord)
{
int error,err;
while (true)
{ error=true;
if (ord=="Buy" ) error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,"BUY",Magic,0,Blue);
if (ord=="Sell") error=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,SL,TP,"SELL",Magic,0,Red);
if (ord=="BuyStop" ) error=OrderSend(Symbol(),OP_BUYSTOP, Lot,NormalizeDouble(Ask,Digits),SL,TP,"BUYSTOP",Magic,0,Blue);
if (ord=="SellStop") error=OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Bid,Digits),SL,TP,"SELLSTOP",Magic,0,Red);
if (error==-1) //неудачная покупка OK
{ 
ShowERROR();
err++;Sleep(2000);RefreshRates();
}
if (error || err >10) return;
}
return;
} 
//--------------------------------------------------------------------
void ShowERROR()
{
int err=GetLastError();
switch ( err )
{ 
case 1: return;
case 2: Alert("Нет связи с торговым сервером ",Symbol());return;
case 3: Alert("Error неправильные параметры ",Symbol());return;
case 130: Alert("Error близкие стопы Ticket ",Symbol());return;
case 134: Alert("Недостаточно денег ",Symbol());return;
case 146: Alert("Error Подсистема торговли занята ",Symbol());return;
case 129: Alert("Error Неправильная цена ",Symbol());return;
case 131: Alert("Error Неправильный объем ",Symbol());return;
case 4200:Alert("Error Объект уже существует ",Symbol());return;
default: Alert("Error ",err," ",Symbol());return;
}
}
//--------------------------------------------------------------------
 
gince:

間違いではありません。もっと気をつけなければならないことがある


いやいや、そんなことはない。見る記事を間違えていますよ。すぐ下にもあります :)))ご確認いただいたバージョンでは、振り子を設定する現在の価格からの レベル(現在の価格のみ)は指定されていません。ご感想をお寄せいただきありがとうございました。
 
nemo811:

いえいえ、そんなことはありません。間違った投稿をご覧になっています。すぐ下にもあります :)))お客様が確認されたバージョンでは、ペンデンティブを設定すべき、現在の価格からのレベルが表示されていません(現在の価格しか表示されていません)。ご感想をお寄せいただきありがとうございました。

OPENORDER()関数の呼び出し、または関数自体に何か問題があるようです。

次のような仕組みになっています。

イフ (BUYSTOP)

{

if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits);さもなければ TP=0;

if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); else SL=0;

int error=OrderSend(Symbol(,OP_BUYSTOP, Lot,NormalizeDouble(Ask + DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);

}

 
gince:

OPENORDER()関数の呼び出し、または関数自体に何か問題があるようです。

次のような仕組みになっています。

イフ (BUYSTOP)

{

if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits);さもなければ TP=0;

if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); else SL=0;

int error=OrderSend(Symbol(,OP_BUYSTOP, Lot,NormalizeDouble(Ask + DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);

}


あああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ コンピュータの神様!!!もう10回目だよ!なんで動かないんだ!?メインはマーケットオープンです。懸案のものも、まったく同じ原理で書かれている。何が足りないのか?:)))))))
 

チュートリアルにあるTrailingStopFrCnSAR_v2をExpert Advisorに挿入する方法について教えてください。

注文追跡を無効にして、他のEAが保留中の注文を 出したり、注文を開いたりしたときに動作するようにするにはどうすればよいですか?

ファイル:
 

ウラヤマシイ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!バグを発見!

もし興味がある方がいらっしゃれば、こちらが実用版です。

#property copyright"著作権 © 2010, Khlystov Vladimir".
#p

roperty link "cmillion@narod.ru"
#property show_inputs
//--------------------------------------------------------------------
extern int stoploss = 0; //SL露出のレベル、0ならSLは露出しない
extern int int takeprofit = 0; //t TPレベル、0ならTP非展示
extern int int Magic = 123456; //注文番号
extern bool BUY = false; //買いの注文を出す
extern bool SELL = false; //売りの注文を出す
extern bool BUYSTOP = false; //BUYSTOP注文を開始します。
extern bool SELLSTOP = false; //SELLSTOP注文を開始します。
extern double Lot = 0.1; // 注文数量
extern int slippage = 3; //成行注文で許容される最大限の価格偏差
extern int DistanceSet = 20; //市場距離
//--------------------------------------------------------------------
ダブルSL,TP。
//--------------------------------------------------------------------
int start()
{
なら
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits);さもなければ TP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); else SL=0;
OPENORDER(以下、「買付」。)
}
売ったら
{
if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits); else SL=0;
OPENORDER(以下、「売り」)。
}
イフ (BUYSTOP)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits);さもなければ TP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); else SL=0;
OPENORDER(以下、「バイ・ストップ」という。)
}
if (SELLSTOP)
{
if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits); else SL=0;
OPENORDER(「売りストップ」)。
}
return(0)です。
}
//--------------------------------------------------------------------
void OPENORDER(string ord)
{
int error,err;

{error=true。
if (ord=="Buy" ) error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,"",Magic,0);
if (ord=="Sell") error=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,SL,TP,",Magic,0);
if (ord=="Buy Stop" ) error=OrderSend(Symbol(),OP_BUYSTOP, Lot,NormalizeDouble(Ask + DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
if (ord=="Sell Stop") error=OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Bid - DistanceSet*Point,Digits),slippage,SL,TP,",Magic,0);
if (error==-1) //失敗
{
ShowERROR()。
err++;Sleep(2000);RefreshRates()。
}
if (error || err >10) return;
}
を返します。
}
//--------------------------------------------------------------------
void ShowERROR()
{
int err=GetLastError();
スイッチ ( err )
{
case 1: return;
case 2: Alert("No connection to the trade server ",Symbol());リターン。
case 3: Alert("Error incorrect parameters ",Symbol());戻り。
case 130: Alert("Error close Ticket stops ",Symbol());戻り。
case 134: Alert("Not enough money ",Symbol());return。
case 146: Alert("Error Trade Subsystem is busy ",Symbol());戻り。
case 129: Alert("Error Wrong price ",Symbol());戻り。
case 131: Alert("Error Incorrect volume ",Symbol());戻り。
case 4200:Alert("Error Object already exists ",Symbol());return。
default: Alert("Error ",err," ",Symbol());戻り。
}
}
//--------------------------------------------------------------------

議論に参加された皆さん、本当にありがとうございました!!!あなたがいなければどこにも行けない!:)))))

 
nemo811:

ウラヤマシイ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!間違いを発見!


議論に参加された皆さんに大感謝です!!!!あなたがいなければどこにも行けない!:)))))

の場合、コードにエラーがあります。

注意: 保留注文のストップとテイクは、現在の価格からではなく、注文の開始価格から カウントされることに注意してください。

 

HELP!教えてください、私はポジションの一部を閉じる場合(例えば1ロットの順序、および0.5ロットを閉じる)OrderCloseチケットは変更する必要がありますか?私のテスターではそうなっているのですが...。どうすれば回避できるのか?以下は、クロージングコードの一部です...。

1 2011.01.31 06:57 売り 1 2.55 1.36177 0.00000 0.00000 10000.00
2 2011.01.31 08:10 売り 1 0.51 1.36039 0.00000 0.00000 70.38 10070.38
3 2011.01.31 08:10 売り 2 2.04 1.00000 0.00000 0.00000 10000.3836177 0.00000 0.00000 0.0000 10070.38
4 2011.01.31 08:10 close 2 0.40 1.36038 0.00000 0.00000 55.60 10125.98
5 2011.01.31 08:10 sell 3 1.64 1.36177 0.00000 0.00000 0.00000 10125.98

もう一つの質問:私は私の注文を4つの部分に分割し、Cls_S==trueがトリガーされたときにそれらの各々を閉じたいのです。カウンターを使おうとしたのですが・・・。うまくいかない...

どなたか、アイデアを教えてください。

ありがとうございました!!!!

if (Tip==1 && ((Cls_S0==true&&TotClS==0)||(Cls_S1==true&TotClS==1)
||(Cls_S2==true&TotClS==2)||(Cls_S3==true&TotClS==3)) // 売り注文が開かれている。
{ // そして、それを閉じるための基準がある
Alert("Attempting to close 0.2 Lot Sell ",Ticket,".返信待ち...");
RefreshRates(); // データ更新
Ans=OrderClose(Ticket,LotCt,Ask,5)。

if (Ans==true) // うまくいきました :)
{
TotClS++;
Alert ("Closed 0.2 Lot Sell ",Ticket);
break; // 閉ループから抜ける
}
if (Fun_Error(GetLastError())==1) // エラー処理
continue; // Retry
return; // start() からの終了
}
break; // Exit while

 
gince:
フラグ[]バッファの一時的な描画を行いました - それは空です、しかし、なぜですか?私のエラーはどこにあるのでしょうか?
どうだろう。セルゲイエフは知っている、正しいようだと言った。また、正しい書き方も見てみたい。
何かを示すように、少し修正しただけです。
- インジケータを別ウィンドウにして、それを元に戻すと

- 配列macd[]が宙に浮いていたのをインジケータにし、精度を上げた。
- 複雑な条件を固定して開き、簡単な条件を入れて調整します。
- は、フラグの条件を変更したので、少なくとも動作はします。

そして、徐々に条件を導入していけば、どこにバグがあるのかがすぐに分かるようになります。

ファイル: