MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 949 1...942943944945946947948949950951952953954955956...1953 新しいコメント Yevhenii Levchenko 2019.08.30 10:13 #9481 また、初期化以降に表示されたすべてのバー計算が正しく表示されない......。 MrBrooklin 2019.08.30 12:15 #9482 皆さん、ごきげんよう。 Metatrader5用のスクリプトコードの一部を紹介します。 #property copyright "Copyright 2019, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" //---- показывать входные параметры #property script_show_inputs //--- #include <Trade\Trade.mqh> #include <Trade\SymbolInfo.mqh> CTrade m_trade; // trading object CSymbolInfo m_symbol; // symbol info object //+------------------------------------------------------------------+ //| Enum Stop or Limit | //+------------------------------------------------------------------+ enum ENUM_STOP_OR_LIMIT { stop=0, // Buy stop and Sell stop limit=1 // Buy limit and Sell limit }; //--- input parameters input ushort InpUpGap = 15; // Gap for pending orders UP from the current price (in points) input ushort InpUpStep = 30; // Step between orders UP (in points) input ushort InpDownGap = 15; // Gap for pending orders DOWN from the current price (in points) input ushort InpDownStep = 30; // Step between orders DOWN (in points) input ENUM_STOP_OR_LIMIT InpPending = stop; // Type of pending orders input uchar InpUpQuantity = 1; // UP quantity orders input uchar InpDownQuantity = 1; // DOWN quantity orders input double InpLots = 0.01; // Lots input ushort InpStopLoss = 50; // Stop Loss (in points) input ushort InpTakeProfit = 50; // Take Profit (in points) //--- ulong m_slippage=30; // slippage double ExtUpGap=0.0; double ExtUpStep=0.0; double ExtDownGap=0.0; double ExtDownStep=0.0; double ExtStopLoss=0.0; double ExtTakeProfit=0.0; //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- if(InpLots<=0.0) { Print("The \"Lots\" can't be smaller or equal to zero"); return; } //--- if(!m_symbol.Name(Symbol())) // sets symbol name 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); //--- ExtUpGap = m_symbol.Point() * InpUpGap; ExtUpStep = m_symbol.Point() * InpUpStep; ExtDownGap = m_symbol.Point() * InpDownGap; ExtDownStep = m_symbol.Point() * InpDownStep; ExtStopLoss = m_symbol.Point() * InpStopLoss; ExtTakeProfit = m_symbol.Point() * InpTakeProfit; //--- start work double start_price_ask=m_symbol.Ask()-ExtUpGap; double start_price_bid=m_symbol.Bid()+ExtDownGap; //--- set pending orders for(int i=0; i<InpUpQuantity; i++) { double price_ask = start_price_ask+i*ExtUpStep; double price_bid = start_price_bid+i*ExtUpStep; if(InpPending==stop) { double sl = (ExtStopLoss==0.0) ? 0.0 : price_ask - ExtStopLoss; double tp = (ExtTakeProfit==0.0) ? 0.0 : price_ask + ExtTakeProfit; m_trade.BuyStop(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.SellLimit(InpLots,m_symbol.NormalizePrice(price_bid),m_symbol.Name(), m_symbol.NormalizePrice(sl), m_symbol.NormalizePrice(tp)); } } for(int i=0; i<InpDownQuantity; i++) { double price_ask = start_price_ask-i*ExtDownStep; double price_bid = start_price_bid-i*ExtDownStep; if(InpPending==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)); } } } このスクリプトは、アスクとビッドから一定の距離にある保留中の指値注文、またはストップ注文を設定することになっています。指値注文は 問題なく設定されるが、逆指値注文は設定されない。売りの逆指値注文と買いの逆指値注文が設定されない理由がわかりません。 ウラジーミルさん、ありがとうございます。 Rustam Bikbulatov 2019.08.30 13:49 #9483 こんにちは、皆さん。オープンオーダーの横でたくさん書かされました。 for(int no1=0; no1<OrdersTotal(); no1++){ if(OrderSelect(no1,SELECT_BY_POS,MODE_TRADES)){ if(OrderSymbol()==Symbol() && OrderType()== OP_BUY){ ObjectCreate("LOTB"+OrderTicket(),OBJ_TEXT,0,TimeCurrent(),OrderOpenPrice()); ObjectSetText("LOTB"+OrderTicket(),OrderLots()*100,20,"Arial",clrWheat); ObjectSetInteger(0,"LOTB"+OrderTicket(),OBJPROP_ANCHOR,ANCHOR_RIGHT_UPPER); }}} 最後のテキストとこのリストの取り方を教えてください。 Yevhenii Levchenko 2019.08.30 13:54 #9484 Rustam Bikbulatov: こんにちは、皆さん。オープンオーダーの横でたくさん書かされました。最後のテキストとこのリストの取り方を教えてください。 Rustam Bikbulatov 2019.08.30 14:34 #9485 Yevhenii Levchenko: まず、すべてのテキストを検索し、そこからこの関数を使って計算する必要があるのですか? Yevhenii Levchenko 2019.08.30 14:59 #9486 Rustam Bikbulatov: まず、すべてのテキストを検索し、そこからこの関数を使って計算する必要があるのですか? 私自身、最近mql4言語を勉強しているため、このことを十分に理解していません。ヘルプに全て書いてあります。オブジェクトのテキスト全体が必要なのか、それとも一塊が必要なのか? Rustam Bikbulatov 2019.08.30 17:13 #9487 Yevhenii Levchenko: 私自身、最近mql4の言語を学習した者なので、これを徹底的に知っているわけではありません。ヘルプはすべて揃っています。オブジェクトのテキスト全体が必要なのか、それともその一部なのか? 前回書かれた内容が必要 Rustam Bikbulatov 2019.08.30 17:42 #9488 こんにちは、皆さん。オープンオーダーの横でたくさん 書かされました。 for(int no1=0; no1<OrdersTotal(); no1++){ if(OrderSelect(no1,SELECT_BY_POS,MODE_TRADES)){ if(OrderSymbol()==Symbol() && OrderType()== OP_BUY){ ObjectCreate("LOTB"+OrderTicket(),OBJ_TEXT,0,TimeCurrent(),OrderOpenPrice()); ObjectSetText("LOTB"+OrderTicket(),OrderLots()*100,20,"Arial",clrWheat); ObjectSetInteger(0,"LOTB"+OrderTicket(),OBJPROP_ANCHOR,ANCHOR_RIGHT_UPPER); }}} 最後のテキストとこのリストの取り方を教えてください。 Artyom Trishkin 2019.08.30 18:19 #9489 Rustam Bikbulatov:こんにちは、皆さん。オープンオーダーの横でたくさん書かされました。 最後のテキストとこのリストの取り方を教えてください。 どのリストから? そして、エディターのスタイラー(Ctrl+<)を使用してください。 for(int no1=0; no1<OrdersTotal(); no1++) { if(OrderSelect(no1,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderType()== OP_BUY) { ObjectCreate("LOTB"+OrderTicket(),OBJ_TEXT,0,TimeCurrent(),OrderOpenPrice()); ObjectSetText("LOTB"+OrderTicket(),OrderLots()*100,20,"Arial",clrWheat); ObjectSetInteger(0,"LOTB"+OrderTicket(),OBJPROP_ANCHOR,ANCHOR_RIGHT_UPPER); } } } //+------------------------------------------------------------------+ どこから何を取り出せばいいのか? Rustam Bikbulatov 2019.08.30 19:11 #9490 Artyom Trishkin: どのリストから? そして、エディターのスタイラー(Ctrl+<)を使用してください。 どこから入手すればよいのですか? この関数は、各オーダー、より正確にはロット*100に番号を書き込みます。 ここで、最後の数字が何であったかを示す逆関数が必要です。 1...942943944945946947948949950951952953954955956...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
皆さん、ごきげんよう。
Metatrader5用のスクリプトコードの一部を紹介します。
このスクリプトは、アスクとビッドから一定の距離にある保留中の指値注文、またはストップ注文を設定することになっています。指値注文は 問題なく設定されるが、逆指値注文は設定されない。売りの逆指値注文と買いの逆指値注文が設定されない理由がわかりません。
ウラジーミルさん、ありがとうございます。
こんにちは、皆さん。オープンオーダーの横でたくさん書かされました。最後のテキストとこのリストの取り方を教えてください。
まず、すべてのテキストを検索し、そこからこの関数を使って計算する必要があるのですか?
まず、すべてのテキストを検索し、そこからこの関数を使って計算する必要があるのですか?
私自身、最近mql4の言語を学習した者なので、これを徹底的に知っているわけではありません。ヘルプはすべて揃っています。オブジェクトのテキスト全体が必要なのか、それともその一部なのか?
前回書かれた内容が必要
こんにちは、皆さん。オープンオーダーの横でたくさん書かされました。 最後のテキストとこのリストの取り方を教えてください。
どのリストから?
そして、エディターのスタイラー(Ctrl+<)を使用してください。
どこから何を取り出せばいいのか?
どのリストから?
そして、エディターのスタイラー(Ctrl+<)を使用してください。
どこから入手すればよいのですか?
この関数は、各オーダー、より正確にはロット*100に番号を書き込みます。
ここで、最後の数字が何であったかを示す逆関数が必要です。