[アーカイブ!】どんなルーキーの質問でも、フォーラムを散らかさないように。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 2. - ページ 83 1...767778798081828384858687888990...537 新しいコメント Артур 2011.02.09 00:38 #821 よろしくお願いします。82ページのEAは1種類の 注文を出すために書かれたものですが、その下のEA(すべての種類の注文を出すためのもの)は、すべてのティックで注文を出してしまうというエラーがあることがわかりました。 私の間違いは何ですか? extern int Magic = 0; //уникальный номер ордера extern bool BUY = false; //открыть ордер BUY extern bool BUY_STOP = false; //поставить ордер BUY STOP extern bool BUY_LIMIT = false; //поставить ордер BUY LIMIT extern bool SELL = false; //открыть ордер SELL extern bool SELL_STOP = false; //поставить ордер SELL STOP extern bool SELL_LIMIT = false; //поставить ордер SELL LIMIT extern double Lot = 0.1; //объем ордера extern int takeprofit = 0; //уровень выставления TP, если 0, то TP не выставляется extern int stoploss = 0; //уровень выставления SL, если 0, то SL не выставляется extern int DistanceSet = 40; //расстояние от рынка для отложенника 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 (BUY_STOP) { if (takeprofit!=0) TP = NormalizeDouble(Ask + DistanceSet*Point + takeprofit*Point,Digits); else TP=0; if (stoploss!=0) SL = NormalizeDouble(Ask + DistanceSet*Point - stoploss*Point,Digits); else SL=0; OPENORDER ("Buy Stop"); } if (SELL_STOP) { if (takeprofit!=0) TP = NormalizeDouble(Bid - DistanceSet*Point - takeprofit*Point,Digits); else TP=0; if (stoploss!=0) SL = NormalizeDouble(Bid - DistanceSet*Point + stoploss*Point,Digits); else SL=0; OPENORDER ("Sell Stop"); } if (BUY_LIMIT) { if (takeprofit!=0) TP = NormalizeDouble(Ask - DistanceSet*Point + takeprofit*Point,Digits); else TP=0; if (stoploss!=0) SL = NormalizeDouble(Ask - DistanceSet*Point - stoploss*Point,Digits); else SL=0; OPENORDER ("Buy Limit"); } if (SELL_LIMIT) { if (takeprofit!=0) TP = NormalizeDouble(Bid + DistanceSet*Point - takeprofit*Point,Digits); else TP=0; if (stoploss!=0) SL = NormalizeDouble(Bid + DistanceSet*Point + stoploss*Point,Digits); else SL=0; OPENORDER ("Sell Limit"); } return(0); } void OPENORDER(string ord) { int ticket = -1; int err; while (ticket<0) { if (ord=="Buy") ticket=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,"",Magic,0); if (ord=="Sell") ticket=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,SL,TP,"",Magic,0); if (ord=="Buy Stop" ) ticket=OrderSend(Symbol(),OP_BUYSTOP, Lot,NormalizeDouble(Ask + DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0); if (ord=="Sell Stop") ticket=OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Bid - DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0); if (ord=="Buy Limit" ) ticket=OrderSend(Symbol(),OP_BUYLIMIT, Lot,NormalizeDouble(Ask - DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0); if (ord=="Sell Limit") ticket=OrderSend(Symbol(),OP_SELLLIMIT,Lot,NormalizeDouble(Bid + DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0); if (ticket==-1) //неудачная попытка { ShowERROR(); err++;Sleep(2000);RefreshRates(); } } 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; } } あらかじめご了承ください。 --- 2011.02.09 00:52 #822 nemo811: よろしくお願いします。82ページのEAは1種類の注文を出すために書かれたものですが、その下のEA(すべての種類の注文を出すためのもの)は、すべてのティックで注文を出してしまうというエラーがあることがわかりました。 私の間違いは何ですか? あらかじめご了承ください。 注文数の制御は、コードのどこにあるのでしょうか? Nameless 2011.02.09 01:01 #823 nemo811: 要するに、このEAの背後にある考え方は何なのか?一見したところ、このコードは全く取引を開始しないのです。 フラグの値を変えたら、一回トレードが始まったのですが、このEAが何をしているのか理解できません))) Nameless 2011.02.09 01:11 #824 nemo811: extern int Magic = 0; //уникальный номер ордера extern bool BUY = true; //открыть ордер BUY extern bool BUY_STOP = true; //поставить ордер BUY STOP extern bool BUY_LIMIT = true; //поставить ордер BUY LIMIT extern bool SELL = true; //открыть ордер SELL extern bool SELL_STOP = true; //поставить ордер SELL STOP extern bool SELL_LIMIT = true; //поставить ордер SELL LIMIT extern double Lot = 0.1; //объем ордера extern int takeprofit = 0; //уровень выставления TP, если 0, то TP не выставляется extern int stoploss = 0; //уровень выставления SL, если 0, то SL не выставляется extern int DistanceSet = 40; //расстояние от рынка для отложенника 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"); BUY=false; } 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"); SELL=false; } if (BUY_STOP) { if (takeprofit!=0) TP = NormalizeDouble(Ask + DistanceSet*Point + takeprofit*Point,Digits); else TP=0; if (stoploss!=0) SL = NormalizeDouble(Ask + DistanceSet*Point - stoploss*Point,Digits); else SL=0; OPENORDER ("Buy Stop"); BUY_STOP=false; } if (SELL_STOP) { if (takeprofit!=0) TP = NormalizeDouble(Bid - DistanceSet*Point - takeprofit*Point,Digits); else TP=0; if (stoploss!=0) SL = NormalizeDouble(Bid - DistanceSet*Point + stoploss*Point,Digits); else SL=0; OPENORDER ("Sell Stop"); SELL_STOP=false; } if (BUY_LIMIT) { if (takeprofit!=0) TP = NormalizeDouble(Ask - DistanceSet*Point + takeprofit*Point,Digits); else TP=0; if (stoploss!=0) SL = NormalizeDouble(Ask - DistanceSet*Point - stoploss*Point,Digits); else SL=0; OPENORDER ("Buy Limit"); BUY_LIMIT=false; } if (SELL_LIMIT) { if (takeprofit!=0) TP = NormalizeDouble(Bid + DistanceSet*Point - takeprofit*Point,Digits); else TP=0; if (stoploss!=0) SL = NormalizeDouble(Bid + DistanceSet*Point + stoploss*Point,Digits); else SL=0; OPENORDER ("Sell Limit"); SELL_LIMIT=false; } return(0); } void OPENORDER(string ord) { int ticket = -1; int err; while (ticket<0) { if (ord=="Buy") ticket=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,"",Magic,0); if (ord=="Sell") ticket=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,SL,TP,"",Magic,0); if (ord=="Buy Stop" ) ticket=OrderSend(Symbol(),OP_BUYSTOP, Lot,NormalizeDouble(Ask + DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0); if (ord=="Sell Stop") ticket=OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Bid - DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0); if (ord=="Buy Limit" ) ticket=OrderSend(Symbol(),OP_BUYLIMIT, Lot,NormalizeDouble(Ask - DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0); if (ord=="Sell Limit") ticket=OrderSend(Symbol(),OP_SELLLIMIT,Lot,NormalizeDouble(Bid + DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0); if (ticket==-1) //неудачная попытка { ShowERROR(); err++;Sleep(2000);RefreshRates(); } } 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; } } 一般に、注文は一度開き、保留中の注文は一度に一度だけ出します。 [Archive!] Any rookie question, 100% Risk Free Margin Invalid stops error. Артур 2011.02.09 01:11 #825 NameLess: 要するに、このEAの背後にある考え方は何なのか?一見したところ、このコードは全く取引を開始しないのです。 フラグの値を変えたら、一回トレードが始まったのですが、このEAが何をしているのか理解できません))) )))これは別のEAの一部です。レンガを積んでいくようなもの )) Артур 2011.02.09 01:20 #826 もう一つのポイントは、各ペアで別々に総利益または利益を取ることです(分散投資を利用する場合に便利です)。+ Trailing what you can などの機能があります。これは、drknn universal_1_7 Expert Advisorをベースにしています。 Nameless 2011.02.09 01:24 #827 nemo811: もう一つのポイントは、各ペアで別々に総利益または利益を取ることです(分散投資を利用する場合に便利です)。+ Trailing what you can などの機能があります。drknn universal_1_7 Expert Advisorをベースにしています。 このコードはスプレッドと建値の差を合計するだけで、現在のバージョンではマイナスが累積されます。) Артур 2011.02.09 01:34 #828 NameLess: このコードはスプレッドとオープン時の差を単純に加算するため、現在のバージョンではマイナスが蓄積されます)。 これは、今やっていることの少し古いバージョンです。作者のdrknn 氏から掲載の許可をいただきました。 ファイル: rdzexvmen_1.71.rar 17 kb Артур 2011.02.09 01:38 #829 NameLess: 一般に、注文は一度開き、保留中の注文は一度に一度だけ出します。 ありがとうございます!うまくいきました。))注文数をどのようにコントロールするかは、まだ決まっていません Nameless 2011.02.09 01:41 #830 nemo811: ありがとうございます!うまくいきました。))注文数をどのようにコントロールするか、まだ検討する必要がある ))) 他人のコードを引っ掻き回して仕組みを理解するのは、ありがたい仕事です。もしあなたがEAを信頼しているならば、私はあなたの幸運を祈りますし、すべてがうまくいくでしょう) 私自身、自転車を発明し、フクロウをゼロから書きましたが、物事がどこでどのように動くのか、なぜ動かないのか、どこを見ればエラーが出るのかを知っています) そういうことです) 1...767778798081828384858687888990...537 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
よろしくお願いします。82ページのEAは1種類の 注文を出すために書かれたものですが、その下のEA(すべての種類の注文を出すためのもの)は、すべてのティックで注文を出してしまうというエラーがあることがわかりました。
私の間違いは何ですか?
あらかじめご了承ください。
よろしくお願いします。82ページのEAは1種類の注文を出すために書かれたものですが、その下のEA(すべての種類の注文を出すためのもの)は、すべてのティックで注文を出してしまうというエラーがあることがわかりました。
私の間違いは何ですか?
あらかじめご了承ください。
注文数の制御は、コードのどこにあるのでしょうか?
要するに、このEAの背後にある考え方は何なのか?一見したところ、このコードは全く取引を開始しないのです。
フラグの値を変えたら、一回トレードが始まったのですが、このEAが何をしているのか理解できません)))
extern int Magic = 0; //уникальный номер ордера
extern bool BUY = true; //открыть ордер BUY
extern bool BUY_STOP = true; //поставить ордер BUY STOP
extern bool BUY_LIMIT = true; //поставить ордер BUY LIMIT
extern bool SELL = true; //открыть ордер SELL
extern bool SELL_STOP = true; //поставить ордер SELL STOP
extern bool SELL_LIMIT = true; //поставить ордер SELL LIMIT
extern double Lot = 0.1; //объем ордера
extern int takeprofit = 0; //уровень выставления TP, если 0, то TP не выставляется
extern int stoploss = 0; //уровень выставления SL, если 0, то SL не выставляется
extern int DistanceSet = 40; //расстояние от рынка для отложенника
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");
BUY=false;
}
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");
SELL=false;
}
if (BUY_STOP)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + DistanceSet*Point + takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask + DistanceSet*Point - stoploss*Point,Digits); else SL=0;
OPENORDER ("Buy Stop");
BUY_STOP=false;
}
if (SELL_STOP)
{
if (takeprofit!=0) TP = NormalizeDouble(Bid - DistanceSet*Point - takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Bid - DistanceSet*Point + stoploss*Point,Digits); else SL=0;
OPENORDER ("Sell Stop");
SELL_STOP=false;
}
if (BUY_LIMIT)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask - DistanceSet*Point + takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - DistanceSet*Point - stoploss*Point,Digits); else SL=0;
OPENORDER ("Buy Limit");
BUY_LIMIT=false;
}
if (SELL_LIMIT)
{
if (takeprofit!=0) TP = NormalizeDouble(Bid + DistanceSet*Point - takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Bid + DistanceSet*Point + stoploss*Point,Digits); else SL=0;
OPENORDER ("Sell Limit");
SELL_LIMIT=false;
}
return(0);
}
void OPENORDER(string ord)
{
int ticket = -1;
int err;
while (ticket<0)
{
if (ord=="Buy") ticket=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,"",Magic,0);
if (ord=="Sell") ticket=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,SL,TP,"",Magic,0);
if (ord=="Buy Stop" ) ticket=OrderSend(Symbol(),OP_BUYSTOP, Lot,NormalizeDouble(Ask + DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
if (ord=="Sell Stop") ticket=OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Bid - DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
if (ord=="Buy Limit" ) ticket=OrderSend(Symbol(),OP_BUYLIMIT, Lot,NormalizeDouble(Ask - DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
if (ord=="Sell Limit") ticket=OrderSend(Symbol(),OP_SELLLIMIT,Lot,NormalizeDouble(Bid + DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
if (ticket==-1) //неудачная попытка
{
ShowERROR();
err++;Sleep(2000);RefreshRates();
}
}
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;
}
}
一般に、注文は一度開き、保留中の注文は一度に一度だけ出します。
要するに、このEAの背後にある考え方は何なのか?一見したところ、このコードは全く取引を開始しないのです。
フラグの値を変えたら、一回トレードが始まったのですが、このEAが何をしているのか理解できません)))
)))これは別のEAの一部です。レンガを積んでいくようなもの ))
もう一つのポイントは、各ペアで別々に総利益または利益を取ることです(分散投資を利用する場合に便利です)。+ Trailing what you can などの機能があります。drknn universal_1_7 Expert Advisorをベースにしています。
このコードはスプレッドと建値の差を合計するだけで、現在のバージョンではマイナスが累積されます。)
このコードはスプレッドとオープン時の差を単純に加算するため、現在のバージョンではマイナスが蓄積されます)。
これは、今やっていることの少し古いバージョンです。作者のdrknn 氏から掲載の許可をいただきました。
一般に、注文は一度開き、保留中の注文は一度に一度だけ出します。
ありがとうございます!うまくいきました。))注文数をどのようにコントロールするか、まだ検討する必要がある
))) 他人のコードを引っ掻き回して仕組みを理解するのは、ありがたい仕事です。もしあなたがEAを信頼しているならば、私はあなたの幸運を祈りますし、すべてがうまくいくでしょう)
私自身、自転車を発明し、フクロウをゼロから書きましたが、物事がどこでどのように動くのか、なぜ動かないのか、どこを見ればエラーが出るのかを知っています)
そういうことです)