スクリプト: Pending orders DOWN - ページ 3 123456 新しいコメント Vladimir Karputov 2018.12.15 19:41 #21 Михаил Рымарь:こんにちは、このスクリプトは本当に素晴らしく、MQ5で唯一のものです。ご苦労様でした。このシリーズでは、もともと最小ロットを使用するアイデアだった。したがって、今のところ唯一のこれまで。 Mjame116 2019.04.10 17:15 #22 こんにちは。少し教えてください。どのようにコードを調整すれば、希望のロットサイズにできますか?インプロットを変えて何度か試してみましたが、やはり0.01になってしまいます:私は初心者ですが、何か方法があれば教えてください。ありがとうございました。//+------------------------------------------------------------------+ //|未決済オーダー DOWNmq5|||||注文を保留中 //|著作権 © 2017, ウラジーミル・カルプトフ //|http://wmua.ru/slesar/|( 英語 //+------------------------------------------------------------------+ #property copyright "Copyright © 2017, Vladimir Karputov" #property link "http://wmua.ru/slesar/" #property version "1.002" #property description "The script sets the pending orders down from the price" #property script_show_inputs //--- #include <Trade\Trade.mqh> #include <Trade\SymbolInfo.mqh> CTrade m_trade; // 取引オブジェクト CSymbolInfo m_symbol; // シンボル情報オブジェクト //+------------------------------------------------------------------+ //| 保留注文を列挙 DOWN| //+------------------------------------------------------------------+ enum ENUM_PENDING_ORDERS_DOWN { buy_limit =0, // 購入限度額 sell_stop =3 // 売りストップ }; //--- 入力パラメータ input ushort InpDownGep = 10; // 保留中の注文の現在価格からの下げ幅 (pips) input ushort InpDownStep = 3; // 注文と注文の間のステップ DOWN (in pips) input ENUM_PENDING_ORDERS_DOWN InpDownOrders = buy_limit; // 保留中の注文の種類 DOWN input uchar InpDownQuantity = 33; // DOWN量 input double InpLots = 5; // たくさん input ushort InpStopLoss = 100; // ストップロス(単位:pips) input ushort InpTakeProfit = 100; // テイクプロフィット(単位:pips) //--- ulong m_slippage=1; // スリップ double m_adjusted_point; // 3点または5点に調整された点数 double ExtDownGep=0.0; double ExtDownStep=0.0; double ExtStopLoss=0.0; double ExtTakeProfit=0.0; //+------------------------------------------------------------------+ //| スクリプト・プログラム開始機能| //+------------------------------------------------------------------+ void OnStart() { //--- if(InpLots<=0.0) { Print("The \"Lots\" can't be smaller or equal to zero"); return; } //--- if(!m_symbol.Name(Symbol())) // シンボル名を設定する return; if(!RefreshRates()) return; string err_text=""; if(!CheckVolumeValue(InpLots,err_text)) { Print(err_text); return; } //--- if(IsFillingTypeAllowed(SYMBOL_FILLING_FOK)) m_trade.SetTypeFilling(ORDER_FILLING_FOK); else if(IsFillingTypeAllowed(SYMBOL_FILLING_IOC)) m_trade.SetTypeFilling(ORDER_FILLING_IOC); else m_trade.SetTypeFilling(ORDER_FILLING_RETURN); //--- m_trade.SetDeviationInPoints(m_slippage); m_trade.SetAsyncMode(true); //--- 3桁または5桁のチューニング int digits_adjust=1; if(m_symbol.Digits()==3 || m_symbol.Digits()==5) digits_adjust=10; m_adjusted_point=m_symbol.Point()*digits_adjust; ExtDownGep = m_adjusted_point * InpDownGep; ExtDownStep = m_adjusted_point * InpDownStep; ExtStopLoss = m_adjusted_point * InpStopLoss; ExtTakeProfit = m_adjusted_point * InpTakeProfit; //--- 作業開始 double start_price_ask=m_symbol.Ask()-ExtDownGep; double start_price_bid=m_symbol.Bid()-ExtDownGep; //--- 保留中の注文数 DOWN for(int i=0;i<InpDownQuantity;i++) { double price_ask = start_price_ask-i*ExtDownStep; double price_bid = start_price_bid-i*ExtDownStep; if(InpDownOrders==buy_limit) { double sl = (ExtStopLoss==0.0) ? 0.0 : price_ask - ExtStopLoss; double tp = (ExtTakeProfit==0.0) ? 0.0 : price_ask + ExtTakeProfit; m_trade.BuyLimit(m_symbol.LotsMax(),m_symbol.NormalizePrice(price_ask),m_symbol.Name(), m_symbol.NormalizePrice(sl), m_symbol.NormalizePrice(tp)); } else { double sl = (ExtStopLoss==0.0) ? 0.0 : price_bid + ExtStopLoss; double tp = (ExtTakeProfit==0.0) ? 0.0 : price_bid - ExtTakeProfit; m_trade.SellStop(m_symbol.LotsMax(),m_symbol.NormalizePrice(price_bid),m_symbol.Name(), m_symbol.NormalizePrice(sl), m_symbol.NormalizePrice(tp)); } } } //+------------------------------------------------------------------+ //| シンボルのクォートデータを更新する。| //+------------------------------------------------------------------+ bool RefreshRates() { //--- リフレッシュ・レート if(!m_symbol.RefreshRates()) return(false); //--- "ゼロ "の戻り値からの保護 if(m_symbol.Ask()==0 || m_symbol.Bid()==0) return(false); //--- return(true); } //+------------------------------------------------------------------+ //| オーダーボリュームの正しさをチェックする。 //+------------------------------------------------------------------+ bool CheckVolumeValue(double volume,string &error_description) { //--- 貿易業務の最小許容量 double min_volume=m_symbol.LotsMin(); if(volume<min_volume) { error_description=StringFormat("Volume is less than the minimal allowed SYMBOL_VOLUME_MIN=%.2f",min_volume); return(false); } //--- 取引操作の最大許容量 double max_volume=m_symbol.LotsMax(); if(volume>max_volume) { error_description=StringFormat("Volume is greater than the maximal allowed SYMBOL_VOLUME_MAX=%.2f",max_volume); return(false); } //--- 体積変化の最小ステップを得る double volume_step=m_symbol.LotsStep(); int ratio=(int)MathRound(volume/volume_step); if(MathAbs(ratio*volume_step-volume)>0.0000001) { error_description=StringFormat("Volume is not a multiple of the minimal step SYMBOL_VOLUME_STEP=%.2f, the closest correct volume is %.2f", volume_step,ratio*volume_step); return(false); } error_description="Correct volume value"; return(true); } //+------------------------------------------------------------------+ //| 指定された充填モードが許可されているかどうかをチェックする。 //+------------------------------------------------------------------+ bool IsFillingTypeAllowed(int fill_type) { //--- 許容される充填モードを記述するプロパティの値を取得する。 int filling=m_symbol.TradeFillFlags(); //--- fill_typeモードが許可されている場合、trueを返す return((filling & fill_type)==fill_type); } //+------------------------------------------------------------------+ Vladimir Karputov 2019.04.10 17:29 #23 Mjame116 : こんにちは。少し教えてください。どのようにコードを調整すれば、希望のロットサイズにできますか?インプロットを変えて何度か試してみましたが、やはり0.01になってしまいます:私は初心者ですが、何か方法があれば教えてください。ありがとうございます。最小ロットの 代わりに入力パラメータ Lotsを 入れる必要があります。 //--- 保留中の注文数 DOWN for(int i=0;i<InpDownQuantity;i++) { double price_ask = start_price_ask-i*ExtDownStep; double price_bid = start_price_bid-i*ExtDownStep; if(InpDownOrders==buy_limit) { double sl = (ExtStopLoss==0.0) ? 0.0 : price_ask - ExtStopLoss; double tp = (ExtTakeProfit==0.0) ? 0.0 : price_ask + ExtTakeProfit; m_trade.BuyLimit(m_symbol.LotsMin(),m_symbol.NormalizePrice(price_ask),m_symbol.Name(), m_symbol.NormalizePrice(sl), m_symbol.NormalizePrice(tp)); } else { double sl = (ExtStopLoss==0.0) ? 0.0 : price_bid + ExtStopLoss; double tp = (ExtTakeProfit==0.0) ? 0.0 : price_bid - ExtTakeProfit; m_trade.SellStop(m_symbol.LotsMin(),m_symbol.NormalizePrice(price_bid),m_symbol.Name(), m_symbol.NormalizePrice(sl), m_symbol.NormalizePrice(tp)); } } }が必要です: //--- 保留中の注文数 DOWN for(int i=0;i<InpDownQuantity;i++) { double price_ask = start_price_ask-i*ExtDownStep; double price_bid = start_price_bid-i*ExtDownStep; if(InpDownOrders==buy_limit) { double sl = (ExtStopLoss==0.0) ? 0.0 : price_ask - ExtStopLoss; double tp = (ExtTakeProfit==0.0) ? 0.0 : price_ask + ExtTakeProfit; m_trade.BuyLimit(InpLots,m_symbol.NormalizePrice(price_ask),m_symbol.Name(), m_symbol.NormalizePrice(sl), m_symbol.NormalizePrice(tp)); } else { double sl = (ExtStopLoss==0.0) ? 0.0 : price_bid + ExtStopLoss; double tp = (ExtTakeProfit==0.0) ? 0.0 : price_bid - ExtTakeProfit; m_trade.SellStop(InpLots,m_symbol.NormalizePrice(price_bid),m_symbol.Name(), m_symbol.NormalizePrice(sl), m_symbol.NormalizePrice(tp)); } } } Mjame116 2019.04.11 11:11 #24 Vladimir Karputov:最小ロットの 代わりに、入力パラメータLotsを 置く必要がある。が必要である: 本当にありがとうございました。 Uladzislau Miarzlou 2019.10.07 20:09 #25 スクリプトは素晴らしく、問題なく動作しています。 同じスクリプトを使ってネットをセットアップしているのですが、お聞きしたいことがあります。つまり、ロング・ネットもショート・ネットも同じパラメーターで、アップ・オーダーとダウン・オーダーのネットを同時に張るスクリプトです。 Vladimir Karputov 2019.10.08 08:58 #26 mason_one:スクリプトは素晴らしく、問題なく動作します。同じスクリプトを使ってネットをセットアップしているのですが、お聞きしたいことがあります。つまり、ロング・ネットもショート・ネットも同じパラメーターで、アップ・オーダーとダウン・オーダーのネットを同時に張るスクリプトです。 ありがとうございます。私は(Expert Advisorではなく)、上下両方の保留注文の グリッドを設定するスクリプトを公開しています -Pending orders UP DOWN. Carlos Devia 2019.11.07 04:28 #27 こんにちは、ウラジミール。あなたのスクリプトはとても興味深いです。とてもよく機能しますが、ロタージュを0.01から0.03に変更する方法を教えていただければと思います。私は気配りし続け、事前に私の友人に非常に感謝します。 Vladimir Karputov 2019.11.07 04:58 #28 Carlos Devia : こんにちは、ウラジミール。あなたのスクリプトはとても興味深いです。とてもよく機能しますが、ロタヘを0.01から0.03に変更する方法を教えていただければと思います。私は注意深いままであり、私の友人に事前に非常に感謝します。 このコードでは、"m_symbol.LotsMin()" の代わりに"InpLots" と記述してください: //--- 保留中の注文数 DOWN for(int i=0;i<InpDownQuantity;i++) { double price_ask = start_price_ask-i*ExtDownStep; double price_bid = start_price_bid-i*ExtDownStep; if(InpDownOrders==buy_limit) { double sl = (ExtStopLoss==0.0) ? 0.0 : price_ask - ExtStopLoss; double tp = (ExtTakeProfit==0.0) ? 0.0 : price_ask + ExtTakeProfit; m_trade.BuyLimit(m_symbol.LotsMin(),m_symbol.NormalizePrice(price_ask),m_symbol.Name(), m_symbol.NormalizePrice(sl), m_symbol.NormalizePrice(tp)); } else { double sl = (ExtStopLoss==0.0) ? 0.0 : price_bid + ExtStopLoss; double tp = (ExtTakeProfit==0.0) ? 0.0 : price_bid - ExtTakeProfit; m_trade.SellStop(m_symbol.LotsMin(),m_symbol.NormalizePrice(price_bid),m_symbol.Name(), m_symbol.NormalizePrice(sl), m_symbol.NormalizePrice(tp)); } } Carlos Devia 2019.11.08 04:00 #29 親愛なるウラジミール、今この瞬間、あなたは私にとって神のような存在です。私がどれだけこの情報を探していたか、あなたは知らないでしょう。私はトレーディングに熱中している人間で、あなたのような人から学んだことはほんのわずかです。 可能であれば、最後の質問をさせてください。 キーボードにホットキーをプログラムしました。 キーボードのホットキーで逆指値注文を有効にするようプログラムしたのですが、有効にする前にウィンドウが開いてしまいます。 開いたウィンドウの写真を添付します。 このウィンドウが開くと、パラメーターを「受け入れる」必要があり、このプロセスで時間を失うことになります。 ファイル: pending_orders.png 29 kb Vladimir Karputov 2019.11.08 07:20 #30 Carlos Devia :親愛なるウラジミール、今この瞬間、あなたは私にとって神のような存在です。私がどれだけこの情報を探していたか、あなたは知らないでしょう。私はトレーディングに熱中している人間で、あなたのような人から学んだことはほとんどありません。可能であれば、最後の質問をしたいのですが。 キーボードにホットキーをプログラムしました。キーボードのホットキーで逆指値の売り注文を有効にするようプログラムしたのですが、有効になる前にウィンドウが開いてしまいます。開いたウィンドウの写真を添付します。このウィンドウが開くと、パラメーターを「受け入れる」必要があり、このプロセスで時間を失うことになります。 ホットキーという選択肢はありません:とにかく起動時に入力パラメータが表示されます。 別の方法を提案しよう: アドバイザーをパネルに書いて、そのパネルに "Start "ボタンを置く。 アドバイザーを起動したら、入力パラメーターを設定する。 起動後、小さなパネルがチャートに表示され、このパネルの "Start "ボタンをクリックすると、未決注文が発注される。 パネルの例 このようなパネルはマーケットで 検索するか、フリーランスサービスで 注文することができます。 123456 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
こんにちは、このスクリプトは本当に素晴らしく、MQ5で唯一のものです。
ご苦労様でした。
このシリーズでは、もともと最小ロットを使用するアイデアだった。したがって、今のところ唯一のこれまで。
こんにちは。少し教えてください。どのようにコードを調整すれば、希望のロットサイズにできますか?インプロットを変えて何度か試してみましたが、やはり0.01になってしまいます:私は初心者ですが、何か方法があれば教えてください。ありがとうございます。
最小ロットの 代わりに入力パラメータ Lotsを 入れる必要があります。
が必要です:
最小ロットの 代わりに、入力パラメータLotsを 置く必要がある。
が必要である:
スクリプトは素晴らしく、問題なく動作しています。
同じスクリプトを使ってネットをセットアップしているのですが、お聞きしたいことがあります。つまり、ロング・ネットもショート・ネットも同じパラメーターで、アップ・オーダーとダウン・オーダーのネットを同時に張るスクリプトです。
スクリプトは素晴らしく、問題なく動作します。
同じスクリプトを使ってネットをセットアップしているのですが、お聞きしたいことがあります。つまり、ロング・ネットもショート・ネットも同じパラメーターで、アップ・オーダーとダウン・オーダーのネットを同時に張るスクリプトです。
ありがとうございます。私は(Expert Advisorではなく)、上下両方の保留注文の グリッドを設定するスクリプトを公開しています -Pending orders UP DOWN.
こんにちは、ウラジミール。あなたのスクリプトはとても興味深いです。とてもよく機能しますが、ロタヘを0.01から0.03に変更する方法を教えていただければと思います。私は注意深いままであり、私の友人に事前に非常に感謝します。
このコードでは、"m_symbol.LotsMin()" の代わりに"InpLots" と記述してください:
親愛なるウラジミール、今この瞬間、あなたは私にとって神のような存在です。私がどれだけこの情報を探していたか、あなたは知らないでしょう。私はトレーディングに熱中している人間で、あなたのような人から学んだことはほんのわずかです。
可能であれば、最後の質問をさせてください。 キーボードにホットキーをプログラムしました。
キーボードのホットキーで逆指値注文を有効にするようプログラムしたのですが、有効にする前にウィンドウが開いてしまいます。
開いたウィンドウの写真を添付します。
このウィンドウが開くと、パラメーターを「受け入れる」必要があり、このプロセスで時間を失うことになります。
親愛なるウラジミール、今この瞬間、あなたは私にとって神のような存在です。私がどれだけこの情報を探していたか、あなたは知らないでしょう。私はトレーディングに熱中している人間で、あなたのような人から学んだことはほとんどありません。
可能であれば、最後の質問をしたいのですが。 キーボードにホットキーをプログラムしました。
キーボードのホットキーで逆指値の売り注文を有効にするようプログラムしたのですが、有効になる前にウィンドウが開いてしまいます。
開いたウィンドウの写真を添付します。
このウィンドウが開くと、パラメーターを「受け入れる」必要があり、このプロセスで時間を失うことになります。
ホットキーという選択肢はありません:とにかく起動時に入力パラメータが表示されます。
別の方法を提案しよう:
パネルの例
このようなパネルはマーケットで 検索するか、フリーランスサービスで 注文することができます。