[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 117 1...110111112113114115116117118119120121122123124...631 新しいコメント Oleg 2012.05.12 01:43 #1161 Roman.: 閉じたストップなんてない、離れたところにある...。OrderOpenTime() - 設定され、トリガーされないストップでは、設定された時刻を返さないのでしょうか? おっしゃるとおり、正確ではありませんでした。 STOP-orderを設定し、それがトリガーとなってポジションが開設されたという意味です。 しかし、ポジションはSTOP-orderが設定された同じバーでオープンされるかもしれないし、しばらくしてからオープンされるかもしれない。 。 OrderOpenTime()はポジションがオープン された時間を示していますが、私の質問は、ストップオーダーが設定された時間をどのように知ることができるのか、ということです。 MT4のレポートではこの時間になっていますが、コードから調べることは可能でしょうか? Рустам 2012.05.12 02:40 #1162 ブローカーがこの情報を提供している場合、トリガー(成行)時に所定の種類、価格、マジックをクローズした注文を探す alex 2012.05.12 03:31 #1163 コンパイル時に以下のエラーが発生します。 '&&' - 条件が文字列であることはできません \00.mq4 (225, 27) '&&' - 条件を文字列にすることはできません。 どうすればいいのでしょうか? Alexander Voronkov 2012.05.12 03:31 #1164 Lians: プロフェッショナルの皆様へ 仮想テイクアンドストップやトレーリングストップを設定するのに便利なExpert Advisorを見つけました(添付)。しかし、バーチャルストップロスは正しく機能しません。訂正のご協力をお願いします。それとも、どなたか良いアナログをお持ちなのでしょうか? 感謝を捧げたい。 以下、同様のSCRIPTです。 コードでの説明です。 ファイル: trailinglines.mq4 7 kb alex 2012.05.12 03:39 #1165 は、アドバイザーが編集したものです。 //+------------------------------------------------------------------+ //| 00.mq4 | //| Copyright 2012, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright 2012, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" //+------------------------------------------------------------------+ color clModifyBuy; color clCloseBuy; // Внешние переменные: extern double ll =1; extern int tp = 0; extern int sl = 0; extern int mn = 777; extern int Slippage = 3; extern int NumberOfTry = 5; //-------------------------------------------------------------------+ //| Описание : Установка ордера. Версия функции для тестов на истории. //| Выставления отложенных ордеров на покупку | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента (NULL или "" - текущий символ) | //| op - операция | //| ll - лот | //| pp - цена | //| sl - уровень стоп | //| tp - уровень тейк | //| mn - Magic Number | //| ex - Срок истечения | //+----------------------------------------------------------------------------+ void SetOrder(string sy, int op, double ll, double pp, double sl=0, double tp=0, int mn=0, datetime ex=0) { color clOpen; int err, ticket; if (sy=="" || sy=="0") sy=Symbol(); if (op==OP_BUYLIMIT || op==OP_BUYSTOP) clOpen=clOpenBuy; ticket=OrderSend(sy, op, ll, pp, Slippage, sl, tp, "", mn, ex, clOpen); if (ticket<0) { err=GetLastError(); Print("Error(",err,") set ",GetNameOP(op),": ",ErrorDescription(err)); Print("Ask=",Ask," sy=",sy," ll=",ll, " pp=",pp," sl=",sl," tp=",tp," mn=",mn); } } //+----------------------------------------------------------------------------+ //| Описание: Закрытие одной предварительно выбранной позиции //| Закрывает отложенный ордера на покупку. | //+----------------------------------------------------------------------------+ void ClosePosBySelect() { double pp; if (OrderType()==2) { pp=MarketInfo(OrderSymbol(), MODE_BID); OrderClose(OrderTicket(), OrderLots(), pp, Slippage, clCloseBuy); } if (OrderType()==4) { pp=MarketInfo(OrderSymbol(), MODE_BID); OrderClose(OrderTicket(), OrderLots(), pp, Slippage, clCloseBuy); } } //| Описание : Возвращает количество ордеров. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любой ордер) | //| mn - MagicNumber (-1 - любой магик) | //+----------------------------------------------------------------------------+ int NumberOfOrders(string sy="", int op=-1, int mn=-1) { int i, k=OrdersTotal(), ko=0, ot; if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { ot=OrderType(); if (ot>1 && ot<6) { if ((OrderSymbol()==sy || sy=="") && (op<0 || ot==op)) { if (mn<0 || OrderMagicNumber()==mn) ko++; } } } } return(ko); } //| Описание : Возвращает цену TakeProfit последней открытой позиций или -1. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) | //+----------------------------------------------------------------------------+ double TakeProfitLastPos(string sy="", int op=-1, int mn=-1) { datetime t; double r=-1; int i, k=OrdersTotal(); if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==sy || sy=="") { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) { if (t<OrderOpenTime()) { t=OrderOpenTime(); r=OrderTakeProfit(); } } } } } } } return(r); } alex 2012.05.12 03:39 #1166 //| Описание : Возвращает цену TakeProfit последней закрытой позиций или -1. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) | //+----------------------------------------------------------------------------+ double TakeProfitLastClosePos(string sy="", int op=-1, int mn=-1) { datetime t; double r=-1; int i, k=OrdersHistoryTotal(); if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { if (OrderSymbol()==sy || sy=="") { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) { if (t<OrderCloseTime()) { t=OrderCloseTime(); r=OrderTakeProfit(); } } } } } } } return(r); } //| Описание : Открытие позиции. Версия функции для тестов на истории. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - текущий символ) | //| op - операция | //| ll - лот | //| sl - уровень стоп | //| tp - уровень тейк | //| mn - MagicNumber | //+----------------------------------------------------------------------------+ void OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int mn=0) { color clOpen; double pp; int err, ticket; if (sy=="") sy=Symbol(); if (op==OP_BUY) { pp=MarketInfo(sy, MODE_ASK); clOpen=clOpenBuy; } ticket=OrderSend(sy, op, ll, pp, Slippage, sl, tp, "", mn, 0, clOpen); if (ticket<0) { err=GetLastError(); Print("Error(",err,") open ",GetNameOP(op),": ",ErrorDescription(err)); Print("Ask=",Ask," sy=",sy," ll=",ll, " pp=",pp," sl=",sl," tp=",tp," mn=",mn); } } //| Описание : Модификация одного предварительно выбранного ордера. | //+----------------------------------------------------------------------------+ //| Параметры: | //| pp - цена установки ордера | //| sl - ценовой уровень стопа | //| tp - ценовой уровень тейка | //| ex - дата истечения | //+----------------------------------------------------------------------------+ void ModifyOrder(double pp=-1, double sl=0, double tp=0, datetime ex=0) { bool fm; color cl=IIFc(OrderType()==OP_BUY || OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP, clModifyBuy); double op, pa, pb, os, ot; int dg=MarketInfo(OrderSymbol(), MODE_DIGITS), er, it; if (pp<=0) pp=OrderOpenPrice(); if (sl<0 ) sl=OrderStopLoss(); if (tp<0 ) tp=OrderTakeProfit(); pp=NormalizeDouble(pp, dg); sl=NormalizeDouble(sl, dg); tp=NormalizeDouble(tp, dg); op=NormalizeDouble(OrderOpenPrice() , dg); os=NormalizeDouble(OrderStopLoss() , dg); ot=NormalizeDouble(OrderTakeProfit(), dg); if (pp!=op || sl!=os || tp!=ot) { for (it=1; it<=NumberOfTry; it++) { if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break; while (!IsTradeAllowed()) Sleep(5000); RefreshRates(); fm=OrderModify(OrderTicket(), pp, sl, tp, ex, cl); if (fm) else { er=GetLastError(); pa=MarketInfo(OrderSymbol(), MODE_ASK); pb=MarketInfo(OrderSymbol(), MODE_BID); Print("Error(",er,") modifying order: ",ErrorDescription(er),", try ",it); Print("Ask=",pa," Bid=",pb," sy=",OrderSymbol(), " op="+GetNameOP(OrderType())," pp=",pp," sl=",sl," tp=",tp); Sleep(1000*10); } } } } //| Описание : Рассчитывает количество ордеров по типам. | //+----------------------------------------------------------------------------+ //| Параметры: | //| mo - массив количества ордеров по типам | //| mn - MagicNumber (-1 - любой магик) | //+----------------------------------------------------------------------------+ void CountOrders(int& mo[], int mn=-1) { int i, k=OrdersTotal(); if (ArraySize(mo)!=6) ArrayResize(mo, 6); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (mn<0 || OrderMagicNumber()==mn) mo[OrderType()]++; } } } //+----------------------------------------------------------------------------+ // Удаление ордеров. Версия функции для тестов на истории. //| Параметры: | //| sy - наименование инструмента (NULL - текущий символ) | //| op - операция ( -1 - любой ордер) | //| mn - MagicNumber ( -1 - любой магик) | //+----------------------------------------------------------------------------+ void DeleteOrders(string sy="", int op=-1, int mn=-1) { int i, k=OrdersTotal(), ot; if (sy=="" || sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { ot=OrderType(); if (ot==OP_BUYLIMIT || ot==OP_BUYSTOP ) { if (OrderSymbol()==sy && (op<0 || ot==op)) { if (mn<0 || OrderMagicNumber()==mn) { OrderDelete(OrderTicket()); } } } } } } //============================================================================== // --------------------------- Графические функции ----------------------------+ //============================================================================== void SetHLine(color cl, string nm="", double p1=0, int st=0, int wd=1) { if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_HLINE, 0, 0,0); ObjectSet(nm, OBJPROP_PRICE1, p1); ObjectSet(nm, OBJPROP_COLOR , cl); ObjectSet(nm, OBJPROP_STYLE , st); ObjectSet(nm, OBJPROP_WIDTH , wd); } alex 2012.05.12 03:41 #1167 2つのエラーを出力 'clOpenBuy' - 変数が定義されていません .mq4 (40, 49) clOpenBuy - 変数が定義されていません。 何度もコードを書き直しましたが、この2つのエラーは直りません。 Victor Nikolaev 2012.05.12 03:50 #1168 alex12: 2つのエラーを出力 'clOpenBuy' - 変数が定義されていません .mq4 (40, 49) clOpenBuy - 変数が定義されていません。 何度もコードを書き直しましたが、この2つのエラーは直りません。 // Внешние переменные: extern double ll =1; extern int tp = 0; extern int sl = 0; extern int mn = 777; extern int Slippage = 3; extern int NumberOfTry = 5; color clOpenBuy=Red; 例えばこんなことができます。 Sceptic Philozoff 2012.05.12 03:51 #1169 alex12:2つのエラーを出力'clOpenBuy' - 変数が定義されていません .mq4 (40, 49)clOpenBuy - 変数が定義されていません。再度コードを書き直したところ、この2つのエラーを修正することができませんでした。alex12 さん、よくわからないんですけど。コドベースの仕事をいくつか持っていて、そんな質問をするんですね。すでにいくつかのスレッドで取り上げられていますね。 変数clOpenBuyが定義されていません。だから、定義されなければならないのです。コードから判断すると、買い注文の オープンに関連する色と似たようなものである。 変数がどのように定義されているかは、正確に知っておく必要があります。いくつかの異なる機能で使用されるため、おそらくグローバルにする必要があります。だから、グローバルに定義する。そして、よりいっそうのこと color clCloseBuy; 定義しましたね。 alex 2012.05.12 03:56 #1170 エラーが大量に発生する 1...110111112113114115116117118119120121122123124...631 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
閉じたストップなんてない、離れたところにある...。
OrderOpenTime() - 設定され、トリガーされないストップでは、設定された時刻を返さないのでしょうか?
STOP-orderを設定し、それがトリガーとなってポジションが開設されたという意味です。
しかし、ポジションはSTOP-orderが設定された同じバーでオープンされるかもしれないし、しばらくしてからオープンされるかもしれない。
。
OrderOpenTime()はポジションがオープン された時間を示していますが、私の質問は、ストップオーダーが設定された時間をどのように知ることができるのか、ということです。
MT4のレポートではこの時間になっていますが、コードから調べることは可能でしょうか?
コンパイル時に以下のエラーが発生します。
'&&' - 条件が文字列であることはできません \00.mq4 (225, 27)
'&&' - 条件を文字列にすることはできません。
どうすればいいのでしょうか?
プロフェッショナルの皆様へ 仮想テイクアンドストップやトレーリングストップを設定するのに便利なExpert Advisorを見つけました(添付)。しかし、バーチャルストップロスは正しく機能しません。訂正のご協力をお願いします。それとも、どなたか良いアナログをお持ちなのでしょうか?
感謝を捧げたい。
コードでの説明です。
は、アドバイザーが編集したものです。
2つのエラーを出力
'clOpenBuy' - 変数が定義されていません .mq4 (40, 49)
clOpenBuy - 変数が定義されていません。
何度もコードを書き直しましたが、この2つのエラーは直りません。
2つのエラーを出力
'clOpenBuy' - 変数が定義されていません .mq4 (40, 49)
clOpenBuy - 変数が定義されていません。
何度もコードを書き直しましたが、この2つのエラーは直りません。
例えばこんなことができます。
2つのエラーを出力
'clOpenBuy' - 変数が定義されていません .mq4 (40, 49)
clOpenBuy - 変数が定義されていません。
再度コードを書き直したところ、この2つのエラーを修正することができませんでした。
alex12 さん、よくわからないんですけど。コドベースの仕事をいくつか持っていて、そんな質問をするんですね。すでにいくつかのスレッドで取り上げられていますね。
変数clOpenBuyが定義されていません。だから、定義されなければならないのです。コードから判断すると、買い注文の オープンに関連する色と似たようなものである。
変数がどのように定義されているかは、正確に知っておく必要があります。いくつかの異なる機能で使用されるため、おそらくグローバルにする必要があります。だから、グローバルに定義する。そして、よりいっそうのこと
color clCloseBuy;
定義しましたね。
エラーが大量に発生する