[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 46 1...394041424344454647484950515253...652 新しいコメント ilunga 2011.08.04 06:26 #451 rustein: 質問はいったいどこにあるのでしょうか? Warstein 2011.08.04 06:27 #452 ilunga: 質問はいったいどこにあるのでしょうか? https://www.mql5.com/ru/forum/115354/page78 ilunga 2011.08.04 06:31 #453 rustein: https://www.mql5.com/ru/forum/115354/page78で、注文が1つしかない場合は、ループが1つになります。 for(;Cnt>=0;Cnt--) { RefreshRates(); OrderSelect(Cnt,SELECT_BY_POS); if(OrderMagicNumber()==Magic) { TotalOpenOrders++; } } 初回は、存在しないオーダーを選択しようとします Warstein 2011.08.04 06:35 #454 ilunga: 上記のコードでは、注文が1つしかない場合、ループは 初回は、存在しないオーダーを選択しようとします ありがとうございます、自分でも訂正します。 --- 2011.08.04 06:37 #455 artmedia70: 端末は深い思考に入り、約15分後、私はそれを殺した。 なーんにも 私なら1分も待たずに殺していただろう。 Дмитрий 2011.08.04 06:44 #456 PapaYozh: AskとBidを使用する直前にRefreshRates()を実行する。 試してみたが、何も変化がない 注文送信機能、すべて標準のようです int OpenPosition(string AdvisorName,int Position,int Magic,double Lots,double StopLoss){ int N; int Сount = 5; int Slippage = (CalculateSpread() * 2); string PeriodString = GetPeriod(Period()); if(Position == OP_BUY){double Price = NormalizeDouble(Ask,Digits); string OrderName = " - Покупка по рынку"; string ErrorName = "Ошибка открытия ордера на покупку"; string CriticalErrorName = "Невозможно открыть ордер на покупку"; string MailCriticalErrorName = "Ошибка открытия"; color Arrow = Gold;} if(Position == OP_SELL){Price = NormalizeDouble(Bid,Digits); OrderName = " - Продажа по рынку"; ErrorName = "Ошибка открытия ордера на продажу"; CriticalErrorName = "Невозможно открыть ордер на продажу"; MailCriticalErrorName = "Ошибка открытия"; Arrow = YellowGreen;} while(IsTradeContextBusy() || !IsTradeAllowed()){int Interval = MathRand()+1000; Print("Торговый поток занят. Повторная проверка через "+DoubleToStr((Interval/1000),0)+" сек"); Sleep(Interval);} RefreshRates(); while(N < Сount){RefreshRates(); int Ticket = OrderSend(Symbol(),Position,Lots,Price,Slippage,StopLoss,0,AdvisorName+ OrderName,Magic,0,Arrow); if(Ticket > 0){if(OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES)){int Flag = 1; PlaySound("recharge.wav"); break;}} else{Flag = 0; int PRM = GetLastError(); string ERR = Error(PRM,"OrderSend()"); ErrorProcessing(AdvisorName+" "+PeriodString,ErrorName+" "+PRM+" ("+ Error(PRM,"OrderSend()")+")","","OrderSend()"); N++; Sleep(5000);} if(N == Сount){ErrorProcessing(AdvisorName+" "+PeriodString,CriticalErrorName, MailCriticalErrorName+" "+PRM+" ("+Error(PRM,"OrderSend()")+")","OrderSend()");}} return(Flag);} PapaYozh 2011.08.04 07:06 #457 Dimoncheg: 試してみたが、何も変化がない。 注文送信機能、すべて標準装備のようです まず、RefreshRates()関数で価格を更新し、必要な価格をPriceに格納します。 そして、Sleep(Interval)を実行すると、この時に相場が変化します。 その後、一昨年の見積もりでOrderSend()を呼び出します。 それに対して何を期待しますか? Дмитрий 2011.08.04 08:53 #458 PapaYozh: まず、RefreshRates()という関数で価格を更新し、必要なものをPriceに格納します。 そして、Sleep(Interval)を実行すると、そのタイミングで相場が変化します。 そしてその後、一昨年の見積もりでOrderSend()を呼び出すのです。 それに対して何を期待しますか? 私の悪い、私は間違った場所に少し近代化、今私は、関数の外に価格を移動しました OpenPosition("Sovetneg",OP_BUY,NormalizeDouble(Ask,Digits),Magic,SlowlyIncreasingLots(0.2),MultiStop(OP_BUY,StopLoss)); この関数自体は、現在 int OpenPosition(string AdvisorName,int Position,double Price,int Magic,double Lots,double StopLoss){ int N; int Сount = 5; int Slippage = (CalculateSpread() * 2); string PeriodString = GetPeriod(Period()); if(Position == OP_BUY){ string OrderName = " - Покупка по рынку"; string ErrorName = "Ошибка открытия ордера на покупку"; string CriticalErrorName = "Невозможно открыть ордер на покупку"; string MailCriticalErrorName = "Ошибка открытия"; color Arrow = Gold;} if(Position == OP_SELL){ OrderName = " - Продажа по рынку"; ErrorName = "Ошибка открытия ордера на продажу"; CriticalErrorName = "Невозможно открыть ордер на продажу"; MailCriticalErrorName = "Ошибка открытия"; Arrow = YellowGreen;} while(IsTradeContextBusy() || !IsTradeAllowed()){int Interval = MathRand()+1000; Print("Торговый поток занят. Повторная проверка через "+DoubleToStr((Interval/1000),0)+" сек"); Sleep(Interval);} while(N < Сount){RefreshRates(); int Ticket = OrderSend(Symbol(),Position,Lots,Price,Slippage,StopLoss,0,AdvisorName+ OrderName,Magic,0,Arrow); if(Ticket > 0){if(OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES)){int Flag = 1; PlaySound("recharge.wav"); break;}} else{Flag = 0; int PRM = GetLastError(); string ERR = Error(PRM,"OrderSend()"); ErrorProcessing(AdvisorName+" "+PeriodString,ErrorName+" "+PRM+" ("+ Error(PRM,"OrderSend()")+")","","OrderSend()"); N++; Sleep(5000);} if(N == Сount){ErrorProcessing(AdvisorName+" "+PeriodString,CriticalErrorName, MailCriticalErrorName+" "+PRM+" ("+Error(PRM,"OrderSend()")+")","OrderSend()");}} return(Flag);} 今はちゃんと見えているのでしょうか? Delf 2011.08.04 09:03 #459 こんにちは。 type==4とはどういう意味か教えてください。 およびタイプ==5 を以下のスニペットに追加しました。 double ma=iMA(Symbol(),PERIOD_D1,21,0,MODE_SMA,PRICE_CLOSE,0); for(int k=1; k<=OrdersTotal(); k++) bool select=OrderSelect(k-1,SELECT_BY_POS); if(select) { int type=OrderType(); int ticket=OrderTicket(); if (Bid<ma && type==4) OrderDelete(ticket); if (Bid>ma && type==5) OrderDelete(ticket); } (但し、BID:ma,type:5,type:5,type:5)。 注文を削除するための条件は、MAによって明確に理解されていますが、一緒にどのように? ありがとうございます。 [ARCHIVE] Any rookie question, Determine Order Status コーディングの方法は? PapaYozh 2011.08.04 09:11 #460 Dimoncheg: 今はそう思えませんか? いいえ、そんなことはありません。さらに悪くなった :) RefreshRates()は、あらかじめ定義された AskとBidの変数の値を更新するので、一度Price変数に格納された値を使用していることを理解してください。 1...394041424344454647484950515253...652 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
質問はいったいどこにあるのでしょうか?
https://www.mql5.com/ru/forum/115354/page78
で、注文が1つしかない場合は、ループが1つになります。
初回は、存在しないオーダーを選択しようとします
上記のコードでは、注文が1つしかない場合、ループは
初回は、存在しないオーダーを選択しようとします
端末は深い思考に入り、約15分後、私はそれを殺した。
私なら1分も待たずに殺していただろう。
AskとBidを使用する直前にRefreshRates()を実行する。
試してみたが、何も変化がない
注文送信機能、すべて標準のようです
試してみたが、何も変化がない。
注文送信機能、すべて標準装備のようです
まず、RefreshRates()関数で価格を更新し、必要な価格をPriceに格納します。
そして、Sleep(Interval)を実行すると、この時に相場が変化します。
その後、一昨年の見積もりでOrderSend()を呼び出します。
それに対して何を期待しますか?
まず、RefreshRates()という関数で価格を更新し、必要なものをPriceに格納します。
そして、Sleep(Interval)を実行すると、そのタイミングで相場が変化します。
そしてその後、一昨年の見積もりでOrderSend()を呼び出すのです。
それに対して何を期待しますか?
この関数自体は、現在 今はちゃんと見えているのでしょうか?私の悪い、私は間違った場所に少し近代化、今私は、関数の外に価格を移動しました
こんにちは。
type==4とはどういう意味か教えてください。
およびタイプ==5
を以下のスニペットに追加しました。
double ma=iMA(Symbol(),PERIOD_D1,21,0,MODE_SMA,PRICE_CLOSE,0);
for(int k=1; k<=OrdersTotal(); k++)
bool select=OrderSelect(k-1,SELECT_BY_POS);
if(select)
{
int type=OrderType();
int ticket=OrderTicket();
if (Bid<ma && type==4)
OrderDelete(ticket);
if (Bid>ma && type==5)
OrderDelete(ticket);
} (但し、BID:ma,type:5,type:5,type:5)。
注文を削除するための条件は、MAによって明確に理解されていますが、一緒にどのように?
ありがとうございます。
今はそう思えませんか?
いいえ、そんなことはありません。さらに悪くなった :)
RefreshRates()は、あらかじめ定義された AskとBidの変数の値を更新するので、一度Price変数に格納された値を使用していることを理解してください。