どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 332 1...325326327328329330331332333334335336337338339...1178 新しいコメント Vitalie Postolache 2013.12.10 14:46 #3311 alexey1979621: ソース なぜ未決済注文をカウントするのか?また、BU();とは誰のことですか? if (OrderSymbol()!=Symbol() && OrderMagicNumber()!=Magic) continue;//отделяем свои ордера. Магик задается в настройках 自分の立場と他人の立場を「分ける」という不思議な方法、その方がいいのでは? if (OrderSymbol()=Symbol() && OrderMagicNumber()=Magic) отделяем свои ордера. Магик задается в настройках {сюда пересчёт рыночных позиций и отложек} Alexey Semenov 2013.12.10 14:58 #3312 evillive: なぜ未決済注文をカウントするのか?また、BU();とは誰のことですか? 自分の立場と他人の立場を「分ける」なんて、変なやり方ですね。 BU();はブレークイーブン関数です。 私のバリアントはどうしたんだ? сюда пересчёт рыночных позиций и отложек 私の場合はどうでしょうか? Vitalie Postolache 2013.12.10 15:07 #3313 alexey1979621: 私の場合はどうでしょうか? 見た目は同じで、中括弧が2つほど追加されただけです。 void CountTrades() // количество открытых ордеров { for(int i=OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol()=Symbol() && OrderMagicNumber()=Magic)//отделяем свои ордера. Магик задается в настройках { int typ=OrderType(); //однократный вызов функции ускоряет работу switch (typ) { case 0: bs++; case 1: ss++; case 2: blms++; case 3: slms++; case 4: bsts++; case 5: ssts++; default: break; } } } } return; } Frangatic 2013.12.10 15:11 #3314 まあみんな:) Alexey Semenov 2013.12.10 15:16 #3315 evillive: 見た目と同じで、中括弧が2つほど追加されるだけです。修正、コンパイル、テストをしましたが、問題は解決されませんでした。この時点で、Expert Advisorは、ディールを開くための条件が満たされているにもかかわらず、それ以上ディールを開きません。 以下は、そのコードの全文です。 extern double Lots = 0.1; extern string Сomment = "Pattern_1"; extern int TakeProfit = 10; extern int StopLoss = 0; extern int Step = 2; extern int StepOtl = 4; extern int BULevel = 2; extern int NotBULevel = 2; // Уровень безубытка в пунктах extern int Slippage = 2; // проскальзывание extern int Magic = 111; int ticket1, ticket2, bs, ss, bsts, ssts, slms, blms;//добавил колич. ордеров по типам и их тикеты int timeprev; double price1, price2; //цены открытия ордеров //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { double SL,TP; int slv=MarketInfo(Symbol(),MODE_STOPLEVEL); if(Step<=slv || StepOtl<=slv) {Print("Step или StepOtl слишком мал"); return(0);} CountTrades(); //подсчет ордеров по типам. BU(); //если нет рыночных ордеров----------------------------------------- if(bs+ss+bsts+ssts+blms+slms==0) { if (Open[1]>Close[1] && Open[2]<Close[2] && High[1]>High[2] && Low[1]<Low[2]) // продажа { TP=NormalizeDouble(Bid - TakeProfit * Point, Digits); SL=NormalizeDouble(Bid + StopLoss*Point,Digits); if(TakeProfit==0) TP=0; if(StopLoss==0) SL=0; ticket1=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL,TP,"Pattern_1",Magic,0,Red);//Сразу с тейк-профитом, магик в настройках if(OrderSelect(ticket1,SELECT_BY_TICKET,MODE_TRADES)) price1=OrderOpenPrice();//цена первого ордера SL=NormalizeDouble(Bid+StepOtl*Point-StopLoss*Point,Digits); if(StopLoss==0) SL=0; ticket2=OrderSend(Symbol(),OP_BUYSTOP,Lots,NormalizeDouble(Bid+StepOtl*Point,Digits),0,SL,0,"Pattern_1",Magic,0,Blue);//тикет для BuyStop if(OrderSelect(ticket2,SELECT_BY_TICKET,MODE_TRADES)) price2=OrderOpenPrice();//цена второго ордера } if (Open[1]<Close[1] && Open[2]>Close[2] && High[1]>High[2] && Low[1]<Low[2]) // покупка { TP=NormalizeDouble(Ask + TakeProfit * Point, Digits); if(TakeProfit==0) TP=0; SL=NormalizeDouble(Ask-StopLoss*Point,Digits); if(StopLoss==0) SL=0; ticket1=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,SL,TP,"Pattern_1",Magic,0,Blue);//с тейком, магик в настройках if(OrderSelect(ticket1,SELECT_BY_TICKET,MODE_TRADES)) price1=OrderOpenPrice();//цена первого ордера SL=NormalizeDouble(Bid-StepOtl*Point+StopLoss*Point,Digits); if(StopLoss==0) SL=0; ticket2=OrderSend(Symbol(),OP_SELLSTOP,Lots,NormalizeDouble(Bid-StepOtl*Point,Digits),0,SL,0,"Pattern_1",Magic,0,Red);//тикет для SellStop if(OrderSelect(ticket2,SELECT_BY_TICKET,MODE_TRADES)) price2=OrderOpenPrice();//цена второго ордера } } return(0); } //+------------------------------------------------------------------+ void CountTrades() // количество открытых ордеров { for(int i=OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)//отделяем свои ордера. Магик задается в настройках { int typ=OrderType(); //однократный вызов функции ускоряет работу switch (typ) { case 0: bs++; case 1: ss++; case 2: blms++; case 3: slms++; case 4: bsts++; case 5: ssts++; default: break; } } } } return; } //+------------------------------------------------------------------+ void BU() { for(int a=OrdersTotal()-1; a>=0; a--) { if (OrderSelect(a, SELECT_BY_POS, MODE_TRADES)) { if(OrderMagicNumber()!=Magic || OrderSymbol()!=Symbol()) continue; int typ=OrderType(); //вызываем функции int tic=OrderTicket(); //один раз double oop=OrderOpenPrice(); //это ускоряет работу double otp=OrderTakeProfit(); //советника double osl=OrderStopLoss(); if(typ==OP_BUY) { if(oop<=NormalizeDouble(Bid-BULevel*Point-NotBULevel*Point,Digits) && oop>osl)// последнеее условие БУ + 20 пипсов OrderModify(tic,oop,NormalizeDouble(oop+NotBULevel*Point,Digits),otp,0,Green); OrderDelete(ticket2,Yellow); } if(typ==OP_SELL) { if(oop>=NormalizeDouble(Ask+BULevel*Point+NotBULevel*Point,Digits) && (oop<osl || osl==0))// последнеее условие БУ + 20 пипсов OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-NotBULevel*Point,OrderTakeProfit(),0,Red); OrderDelete(ticket2,Yellow); } } } return; } Boris 2013.12.10 15:18 #3316 artmedia70: アバウトグッド - それは水の中の投石器です。速いとなると、やはりちょっと......。そして、安ければ、ポイント1参照。 すると、こんな感じになります。 1.Goodは、ちょっと棒読みです。2.速さについて、諸刃の剣でもある...。3.そして、それが安ければ......ポイント1を参照。 今、わかった! Artyom Trishkin 2013.12.10 15:23 #3317 alexey1979621: 修正、コンパイル、テスト - 問題が残る - 特定の条件が発生した場合、Expert Advisor は取引を開始し、Take または Stop Loss で決済します。この時点で、Expert Advisorは、ディールを開くための条件が満たされているにもかかわらず、それ以上ディールを開きません。 以下は、そのコードの全文です。 どこでカウントしているのか? bs+ss+bsts+ssts+blms+slms 彼らはグローバルです。しかも、チェックするまでリセットされないようです。そして、チェックの前の彼らの計算 - どこに? Vitalie Postolache 2013.12.10 15:28 #3318 alexey1979621: 修正、コンパイル、テスト - 問題が残る - 特定の条件が発生した場合、Expert Advisor は取引を開始し、Take または Stop Loss で決済します。この時点で、Expert Advisorは、ディールを開くための条件が満たされているにもかかわらず、それ以上ディールを開きません。 以下は、そのコードの全文です。 BUはやり直し、マーケットポジションは削除できないし、ストップが凍結されているのでポジションは増えない ))) Artyom Trishkin 2013.12.10 15:31 #3319 alexey1979621: 修正、コンパイル、テスト - 問題が残る - 特定の条件が発生した場合、Expert Advisor は取引を開始し、Take または Stop Loss で決済します。この時点で、Expert Advisorは、ディールを開くための条件が満たされているにもかかわらず、それ以上ディールを開きません。 以下は、そのコードの全文です。 case 0: bs++; break; case 1: ss++; break; case 2: blms++; break; case 3: slms++; break; case 4: bsts++; break; case 5: ssts++; break; default: break; Vitalie Postolache 2013.12.10 16:07 #3320 evillive: BUやり直し、マーケットポジションは削除できないし、ハンギングストップのためポジションは増えない ))) BU() 関数が ブレーク(コメントアウト)する必要があるかどうか、達人にコメントさせ、alexey1979621に、この関数がそこで呼ばれているかどうかを考えさせましょう? また、このようにCountTrades();関数を使用すると、OrdersTotal() と同等になり、よりシンプルで高速になります。 void BU() { bool bu=false; for(int a=OrdersTotal()-1; a>=0; a--) { if (OrderSelect(a, SELECT_BY_POS, MODE_TRADES)) { if(OrderMagicNumber()==Magic || OrderSymbol()==Symbol()) { int typ=OrderType(); //вызываем функции int tic=OrderTicket(); //один раз double oop=OrderOpenPrice(); //это ускоряет работу double otp=OrderTakeProfit(); //советника double osl=OrderStopLoss(); if(typ==OP_BUY) { if(oop<=NormalizeDouble(Bid-BULevel*Point-NotBULevel*Point,Digits) && oop>osl)// последнеее условие БУ + 20 пипсов OrderModify(tic,oop,NormalizeDouble(oop+NotBULevel*Point,Digits),otp,0,Green); bu=true; //break; } if(typ==OP_SELL) { if(oop>=NormalizeDouble(Ask+BULevel*Point+NotBULevel*Point,Digits) && (oop<osl || osl==0))// последнеее условие БУ + 20 пипсов OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-NotBULevel*Point,OrderTakeProfit(),0,Red); bu=true; //break; } if(bu==true && (typ==OP_BUYSTOP || typ==OP_SELLSTOP)) { OrderDelete(tic,Yellow); bu=false; } } } } return; } 1...325326327328329330331332333334335336337338339...1178 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ソース
なぜ未決済注文をカウントするのか?また、BU();とは誰のことですか?
自分の立場と他人の立場を「分ける」という不思議な方法、その方がいいのでは?
なぜ未決済注文をカウントするのか?また、BU();とは誰のことですか?
自分の立場と他人の立場を「分ける」なんて、変なやり方ですね。
BU();はブレークイーブン関数です。
私のバリアントはどうしたんだ?
сюда пересчёт рыночных позиций и отложек
私の場合はどうでしょうか?私の場合はどうでしょうか?
見た目は同じで、中括弧が2つほど追加されただけです。
見た目と同じで、中括弧が2つほど追加されるだけです。
修正、コンパイル、テストをしましたが、問題は解決されませんでした。この時点で、Expert Advisorは、ディールを開くための条件が満たされているにもかかわらず、それ以上ディールを開きません。
以下は、そのコードの全文です。
アバウトグッド - それは水の中の投石器です。速いとなると、やはりちょっと......。そして、安ければ、ポイント1参照。
すると、こんな感じになります。
1.Goodは、ちょっと棒読みです。2.速さについて、諸刃の剣でもある...。3.そして、それが安ければ......ポイント1を参照。
今、わかった!
修正、コンパイル、テスト - 問題が残る - 特定の条件が発生した場合、Expert Advisor は取引を開始し、Take または Stop Loss で決済します。この時点で、Expert Advisorは、ディールを開くための条件が満たされているにもかかわらず、それ以上ディールを開きません。
以下は、そのコードの全文です。
どこでカウントしているのか?
彼らはグローバルです。しかも、チェックするまでリセットされないようです。そして、チェックの前の彼らの計算 - どこに?修正、コンパイル、テスト - 問題が残る - 特定の条件が発生した場合、Expert Advisor は取引を開始し、Take または Stop Loss で決済します。この時点で、Expert Advisorは、ディールを開くための条件が満たされているにもかかわらず、それ以上ディールを開きません。
以下は、そのコードの全文です。
修正、コンパイル、テスト - 問題が残る - 特定の条件が発生した場合、Expert Advisor は取引を開始し、Take または Stop Loss で決済します。この時点で、Expert Advisorは、ディールを開くための条件が満たされているにもかかわらず、それ以上ディールを開きません。
以下は、そのコードの全文です。
BUやり直し、マーケットポジションは削除できないし、ハンギングストップのためポジションは増えない )))
BU() 関数が ブレーク(コメントアウト)する必要があるかどうか、達人にコメントさせ、alexey1979621に、この関数がそこで呼ばれているかどうかを考えさせましょう?
また、このようにCountTrades();関数を使用すると、OrdersTotal() と同等になり、よりシンプルで高速になります。