初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 762 1...755756757758759760761762763764765766767768769...1503 新しいコメント Alexey Viktorov 2017.07.20 05:10 #7611 Alexey Kozitsyn: そして、チェックすべきはポジションでもディールでもなく、オーダーです。なぜなら、オーダーが先で、次にディール、そしてポジションとなるからです。なぜ注文だけなのか?案件にはポジションID(チケット)はないのですか? deal_position_id 削除済み 2017.07.20 05:31 #7612 Alexey Viktorov:なぜ注文だけなのか?案件にはポジションID(チケット)はないのですか? deal_position_idはい、おっしゃるとおりです。オーダーとディールの両方がポジション識別子を持つ。しかし、一般的なケースでは、ポジションには、取引を開始した最初のオーダーの識別子が割り当てられることを知っておく必要があります。したがって、ポジションを開始する「主体」は注文者であり、取引者ではない。そして、検索すべきは案件ではなく、受注である。ドキュメントよりポジション識別子は、新しく開設されたポジションに割り当てられる一意の番号で、その生涯を通じて変更されることはありません。ポジションが開設された注文のチケットに対応します。ポジション識別子は、各注文(ORDER_POSITION_ID)と、それをオープン、変更、クローズした各取引(DEAL_POSITION_ID)に指定されています。このプロパティは、ポジションに関連する注文や取引を検索するために使用します。 Alexey Viktorov 2017.07.20 06:48 #7613 Alexey Kozitsyn:はい、おっしゃるとおりです。注文と取引の両方がポジション識別子を持ちます。しかし、一般的には、ポジションには取引を開始した最初の注文の識別子が割り当てられることを 知っておく必要があります。したがって、ポジションを開始する「主体」は注文者であり、取引者ではない。そして、検索すべきは案件ではなく、受注である。ドキュメントより反論するつもりはない、ドキュメントに書いてある通りだ。しかし、同じ文書の他の箇所には「原則として...」と書かれており、矛盾がある可能性があります。そして、これは私がかつて遭遇した「原則通り」なのだが......。位置ポジションチケットのことです。ポジションの変更およびクローズ 時に、そのユニークな識別のために記入される必要があります。原則として、ポジションを建てた注文のチケットに対応します。 覚えていないし、理解し、読み、訂正し、忘れたとは考えにくい。読んで、訂正して、忘れてしまった。 Ivan Ivanov 2017.07.20 08:00 #7614 Vitaly Muzichenko: 取引に使用したチケットを回収する方法を教えてください。スクリーンショットでは "63214735 "となっています。ここでは、Dealのリストの中の位置番号を探しているのですが、そうでない場合は間違って います。以下は、HistorySelectByPositionが 与える効果を示すスクリプト です。//--- input parameters input int Position; //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { ulong Ticket; if ( HistorySelectByPosition(Position) ) { Print("Position = "+IntegerToString(Position)); int o=HistoryOrdersTotal()-1; while ( o>=0 ) { Ticket=HistoryOrderGetTicket(o); Print("Order "+IntegerToString(o)+" = "+IntegerToString(Ticket)); o--; } int d=HistoryDealsTotal()-1; while ( d>=0 ) { Ticket=HistoryDealGetTicket(d); Print("Deal "+IntegerToString(d)+" = "+IntegerToString(Ticket)); d--; } } }そして、その結果はこのようになります。Position = 65328142 Order 1 = 65347809 Order 0 = 65328142 Deal 1 = 4070777 Deal 0 = 4051254 0 = オープンポジション1 = クローズポジション出ない場合=チケットポジションを入力しなかった場合Deal Ticketから始めても同じ結果が得られます。 HistoryDealGetInteger()関数の場合 enum_deal_property_integer 識別子 商品説明 タイプ DEAL_TICKET(ディールチケット お得なチケット各取引に付与される固有番号 長 DEAL_ORDER 売買が成立した注文書 長 DEAL_TIME(ディールタイム 取引実行時間 時分 DEAL_TIME_MSC 1970年01月01日からのディール実行時間(ミリ秒)。 長 DEAL_TYPE 案件の種類 ENUM_DEAL_TYPE DEAL_ENTRY ディール方向 - 市場参入、市場撤退または反転 enum_deal_entry DEAL_MAGIC 案件のマジックナンバー( ORDER_MAGIC参照) 長 DEAL_REASON 取引の理由または発生源 enum_deal_reason deal_position_id この取引が関与した、開始、変更、または終了のポジションの識別子。 各ポジションには一意の識別子があり、その識別子はポジションの有効期間中にその商品で行われたすべての取引に割り当てられます。 長 Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок www.mql5.com Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5 Questions from Beginners MQL5 MetaTraderプログラムを簡単かつ迅速に開発するためのライブラリ(第9部): MQL4との互換性 - データの準備 トレード履歴のカスタム表示とレポート図の作成 Vitaly Muzichenko 2017.07.20 08:53 #7615 Ivan Ivanov: ありがとうございました。 これが必要だった:HistoryOrderGetTicket Artyom Trishkin 2017.07.20 09:24 #7616 Vitaly Muzichenko:ありがとうございました。 これが必要だった:HistoryOrderGetTicket注文は1.0ロットまで可能です。しかし、例えばロット0.9など部分的に実行されることもあり、その場合は残りが拒否されます(実行モードに依存)。そして、注文のロットを検索し始めると、矛盾が生じます。 Aleksey Vyazmikin 2017.07.20 23:24 #7617 OHLC環境値を取得するための適切なコードが必要です。オプション1//------------------------------------------------------------------- //==MQL4toMQL5 //+------------------------------------------------------------------+ //| Получим Open для заданного номера бара | //+------------------------------------------------------------------+ double Open(int index) { double open=0; ArraySetAsSeries(Open,true); int copied=CopyOpen(Symbol(),0,0,Bars(Symbol(),0),Open); if(copied>0 && index<copied) open=Open[index]; return(open); } //+------------------------------------------------------------------+ //| Получим Low для заданного номера бара | //+------------------------------------------------------------------+ double Low(int index) { double low=0; ArraySetAsSeries(Low,true); int copied=CopyLow(Symbol(),0,0,Bars(Symbol(),0),Low); if(copied>0 && index<copied) low=Low[index]; return(low); } //+------------------------------------------------------------------+ //| Получим High для заданного номера бара | //+------------------------------------------------------------------+ double High(int index) { double high=0; ArraySetAsSeries(High,true); int copied=CopyHigh(Symbol(),0,0,Bars(Symbol(),0),High); if(copied>0 && index<copied) high=High[index]; return(high); } //+------------------------------------------------------------------+ //| Получим Close для заданного номера бара | //+------------------------------------------------------------------+ double Close(int index) { double close=0; ArraySetAsSeries(Close,true); // int copied=CopyHigh(Symbol(),0,0,Bars(Symbol(),0),Close); int copied=CopyClose(Symbol(),0,0,Bars(Symbol(),0),Close); if(copied>0 && index<copied) close=Close[index]; return(close); } //+------------------------------------------------------------------+ //| Получим IOpen для заданного номера бара | //+------------------------------------------------------------------+ double iOpen(string symbol,ENUM_TIMEFRAMES timeframe,int index) { double open=0; ArraySetAsSeries(OpenI,true); int copied=CopyOpen(symbol,timeframe,0,Bars(symbol,timeframe),OpenI); if(copied>0 && index<copied) open=OpenI[index]; return(open); } //+------------------------------------------------------------------+ //| Получим iLow для заданного номера бара | //+------------------------------------------------------------------+ double iLow(string symbol,ENUM_TIMEFRAMES timeframe,int index) { double low=0; ArraySetAsSeries(LowI,true); int copied=CopyLow(symbol,timeframe,0,Bars(symbol,timeframe),LowI); if(copied>0 && index<copied) low=LowI[index]; return(low); } //+------------------------------------------------------------------+ //| Получим iHigh для заданного номера бара | //+------------------------------------------------------------------+ double iHigh(string symbol,ENUM_TIMEFRAMES timeframe,int index) { double high=0; ArraySetAsSeries(HighI,true); int copied=CopyHigh(symbol,timeframe,0,Bars(symbol,timeframe),HighI); if(copied>0 && index<copied) high=HighI[index]; return(high); } //+------------------------------------------------------------------+ //| Получим iClose для заданного номера бара | //+------------------------------------------------------------------+ double iClose(string symbol,ENUM_TIMEFRAMES timeframe,int index) { double close=0; ArraySetAsSeries(CloseI,true); int copied=CopyClose(symbol,timeframe,0,Bars(symbol,timeframe),CloseI); if(copied>0 && index<copied) close=CloseI[index]; return(close); }オプション2 //------------------------------------------------------------------- //==MQL4toMQL5 //+------------------------------------------------------------------+ //| Получим Open для заданного номера бара | //+------------------------------------------------------------------+ double Open(int index) { double open=0; int copied=CopyOpen(Symbol(),0,index,1,Open); if(copied>0) open=Open[0]; return(open); } //+------------------------------------------------------------------+ //| Получим Low для заданного номера бара | //+------------------------------------------------------------------+ double Low(int index) { double low=0; int copied=CopyLow(Symbol(),0,index,1,Low); if(copied>0) low=Low[0]; return(low); } //+------------------------------------------------------------------+ //| Получим High для заданного номера бара | //+------------------------------------------------------------------+ double High(int index) { double high=0; int copied=CopyHigh(Symbol(),0,index,1,High); if(copied>0) high=High[0]; return(high); } //+------------------------------------------------------------------+ //| Получим Close для заданного номера бара | //+------------------------------------------------------------------+ double Close(int index) { double close=0; int copied=CopyClose(Symbol(),0,index,1,Close); if(copied>0) close=Close[0]; return(close); } //+------------------------------------------------------------------+ //| Получим IOpen для заданного номера бара | //+------------------------------------------------------------------+ double iOpen(string symbol,ENUM_TIMEFRAMES timeframe,int index) { double open=0; int copied=CopyOpen(symbol,timeframe,index,1,OpenI); if(copied>0) open=OpenI[0]; return(open); } //+------------------------------------------------------------------+ //| Получим iLow для заданного номера бара | //+------------------------------------------------------------------+ double iLow(string symbol,ENUM_TIMEFRAMES timeframe,int index) { double low=0; int copied=CopyLow(symbol,timeframe,index,1,LowI); if(copied>0) low=LowI[0]; return(low); } //+------------------------------------------------------------------+ //| Получим iHigh для заданного номера бара | //+------------------------------------------------------------------+ double iHigh(string symbol,ENUM_TIMEFRAMES timeframe,int index) { double high=0; int copied=CopyHigh(symbol,timeframe,index,1,HighI); if(copied>0) high=HighI[0]; return(high); } //+------------------------------------------------------------------+ //| Получим iClose для заданного номера бара | //+------------------------------------------------------------------+ double iClose(string symbol,ENUM_TIMEFRAMES timeframe,int index) { double close=0; int copied=CopyClose(symbol,timeframe,index,1,CloseI); if(copied>0) close=CloseI[0]; return(close); } Vitaly Muzichenko 2017.07.20 23:33 #7618 Aleksey Vyazmikin:OHLC環境値を取得するための適切なコードが必要です。オプション1オプション2 どのように適用したかを示すコードのスニペットを投稿してください。 Aleksey Vyazmikin 2017.07.20 23:39 #7619 Vitaly Muzichenko: どのように適用したのか、コードの一部を掲載するどの作品が遅くなっているのかわからない。ループを含め、いろいろな方法で適用しているのだが......。 以下はその一例です。 for(int X=1;X<DonchianBarStart+1;X++) { PricePeresek=Donchianf(0,X+1); if((Low(X)>PricePeresek && High(X)>PricePeresek) || (Low(X)<PricePeresek && High(X)<PricePeresek)) calcBarPeresek++; else break; } Vitaly Muzichenko 2017.07.20 23:56 #7620 Aleksey Vyazmikin:どの作品が遅くなっているのかわからない。ループを含め、いろいろな方法で適用しているのだが......。ループではそう思えるし、関数がなくても大丈夫です double LOW[1],HIGH[1]; for(int X=1;X<DonchianBarStart+1;X++) { PricePeresek=Donchianf(0,X+1); CopyLow(Symbol(),PERIOD_CURRENT,X,1,LOW); CopyHigh(Symbol(),PERIOD_CURRENT,X,1,HIGH); if((LOW[0]>PricePeresek && HIGH[0]>PricePeresek) || (LOW[0]<PricePeresek && HIGH[0]<PricePeresek)) calcBarPeresek++; else break; } 1...755756757758759760761762763764765766767768769...1503 新しいコメント 理由: キャンセル 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
そして、チェックすべきはポジションでもディールでもなく、オーダーです。なぜなら、オーダーが先で、次にディール、そしてポジションとなるからです。
なぜ注文だけなのか?案件にはポジションID(チケット)はないのですか?
deal_position_id
なぜ注文だけなのか?案件にはポジションID(チケット)はないのですか?
deal_position_id
はい、おっしゃるとおりです。オーダーとディールの両方がポジション識別子を持つ。しかし、一般的なケースでは、ポジションには、取引を開始した最初のオーダーの識別子が割り当てられることを知っておく必要があります。したがって、ポジションを開始する「主体」は注文者であり、取引者ではない。そして、検索すべきは案件ではなく、受注である。
ドキュメントより
ポジション識別子は、新しく開設されたポジションに割り当てられる一意の番号で、その生涯を通じて変更されることはありません。ポジションが開設された注文のチケットに対応します。
ポジション識別子は、各注文(ORDER_POSITION_ID)と、それをオープン、変更、クローズした各取引(DEAL_POSITION_ID)に指定されています。このプロパティは、ポジションに関連する注文や取引を検索するために使用します。
はい、おっしゃるとおりです。注文と取引の両方がポジション識別子を持ちます。しかし、一般的には、ポジションには取引を開始した最初の注文の識別子が割り当てられることを 知っておく必要があります。したがって、ポジションを開始する「主体」は注文者であり、取引者ではない。そして、検索すべきは案件ではなく、受注である。
ドキュメントより
反論するつもりはない、ドキュメントに書いてある通りだ。しかし、同じ文書の他の箇所には「原則として...」と書かれており、矛盾がある可能性があります。そして、これは私がかつて遭遇した「原則通り」なのだが......。
位置
ポジションチケットのことです。ポジションの変更およびクローズ 時に、そのユニークな識別のために記入される必要があります。原則として、ポジションを建てた注文のチケットに対応します。
取引に使用したチケットを回収する方法を教えてください。スクリーンショットでは "63214735 "となっています。
ここでは、Dealのリストの中の位置番号を探しているのですが、そうでない場合は間違って います。
以下は、HistorySelectByPositionが 与える効果を示すスクリプト です。
そして、その結果はこのようになります。
0 = オープンポジション
1 = クローズポジション
出ない場合=チケットポジションを入力しなかった場合
Deal Ticketから始めても同じ結果が得られます。
HistoryDealGetInteger()関数の場合
enum_deal_property_integer
識別子
商品説明
タイプ
DEAL_TICKET(ディールチケット
お得なチケット各取引に付与される固有番号
長
DEAL_ORDER
売買が成立した注文書
長
DEAL_TIME(ディールタイム
取引実行時間
時分
DEAL_TIME_MSC
1970年01月01日からのディール実行時間(ミリ秒)。
長
DEAL_TYPE
案件の種類
ENUM_DEAL_TYPE
DEAL_ENTRY
ディール方向 - 市場参入、市場撤退または反転
enum_deal_entry
DEAL_MAGIC
案件のマジックナンバー( ORDER_MAGIC参照)
長
DEAL_REASON
取引の理由または発生源
enum_deal_reason
deal_position_id
この取引が関与した、開始、変更、または終了のポジションの識別子。 各ポジションには一意の識別子があり、その識別子はポジションの有効期間中にその商品で行われたすべての取引に割り当てられます。
長
ありがとうございました。
これが必要だった:HistoryOrderGetTicket
ありがとうございました。
これが必要だった:HistoryOrderGetTicket
注文は1.0ロットまで可能です。しかし、例えばロット0.9など部分的に実行されることもあり、その場合は残りが拒否されます(実行モードに依存)。そして、注文のロットを検索し始めると、矛盾が生じます。
OHLC環境値を取得するための適切なコードが必要です。
オプション1
オプション2
OHLC環境値を取得するための適切なコードが必要です。
オプション1
オプション2
どのように適用したのか、コードの一部を掲載する
どの作品が遅くなっているのかわからない。ループを含め、いろいろな方法で適用しているのだが......。
以下はその一例です。
どの作品が遅くなっているのかわからない。ループを含め、いろいろな方法で適用しているのだが......。
ループではそう思えるし、関数がなくても大丈夫です