コーディングのヘルプ - ページ 259 1...252253254255256257258259260261262263264265266...786 新しいコメント Ovo 2014.04.11 03:38 #2581 私は、カスタムチャートのtick by tickバックテストを実現しようとしています。私はそれについての経験を持っていないので、おそらく誰かが私に一歩踏み出すための助けの手を与えることができます。私は明らかに何か間違ったことをやっているからです。 私は、CSVファイルから相場を読み取り、FXTファイルとHSTファイルに保存しています。 FXTファイルは読み取り専用にしています。問題は、ストラテジー・テスターが 私のFXTファイルを受け入れず、停止してしまうことです。 FXTファイルとHSTファイルの整合性はどの程度なのでしょうか?例えば、レンジバーチャートは、HSTでは1ポイントの均一なギャップがありますが、FXTでは適度なギャップがあります。これは問題なのでしょうか? ファイル: clipboard72.png 19 kb Mladen Rakic 2014.04.11 04:58 #2582 Ovo: 私はカスタムチャートのtick by tickバックテストを実現しようとしています。私はそれについて経験がないので、おそらく誰かが私に一歩踏み出すためのヘルプハンドを与えることができます。私はどうやら何か間違ったことをしているようなので。CSV ファイルから見積書を読み込んで、FXT ファイルと HST ファイルに保存しています。 そして、FXTファイルを読み取り専用にマークしています。問題は、ストラテジーテスターが私のFXTファイルを受け入れず、停止してしまうことです。 FXTファイルとHSTファイルの整合性はどの程度なのでしょうか?例えば、レンジバーチャートは、HSTでは1ポイントの均一なギャップがありますが、FXTでは適度なギャップがあります。これは問題なのでしょうか? オボ バックテストでは、1ポイントよりもはるかに大きなギャップがfxtファイルに作られます。fxtファイルのフォーマットは適切(新しい)でしょうか? Ovo 2014.04.11 05:22 #2583 mladen: Ovo それは全く問題ないでしょう(バックテストの際、その1ポイントよりはるかに大きなギャップがfxtファイルに作られます)。fxtファイルのフォーマットは適切(新しい)でしょうか? ありがとうございます、問題ないことを祈りました。 FXTの実際のフォーマットはよくわからないのですが、私が持っているのはローソクをレンダリングするものです。 まず、MQL4のサイトで401バージョンを見つけ、それが405のリバースエンジニアリングに役立ちました。次に、405バージョンを含むCSV2FXTスクリプトを見つけましたが、まだ完全に解析していません。 私は、バグはむしろヘッダーのコンテンツにあると思います。 だから今、私はローソクの形よりもむしろFXTヘッダに焦点を当てるべきである(それは非常に適切にレンダリングされる)。 私は現在、FXTにこの構造を使っています。 struct Shortdate { int date; }; struct Padding { char padding; }; struct MT4FxtCandle { datetime openTime; double open; double high; double low; double close; uint volume; uint spread; Shortdate tickTime; int flag; }; struct MT4FxtHeader { int version; char copyright[64]; char server[128]; char symbol[12]; int period; TestModelEnum model; int bars; Shortdate fromdate; Shortdate todate; Padding p1[4]; double modelquality; char currency[12]; int spread; int digits; Padding p2[4]; double point; int lot_min; int lot_max; int lot_step; int stops_level; int gtc_pendings; Padding p3[4]; double contract_size; double tick_value; double tick_size; ProfitCalcModeEnum profit_mode; int swap_enable; int swap_type; Padding p4[4]; double swap_long; double swap_short; int swap_rollover3days; int leverage; FreeMarginCalcModeEnum free_margin_mode; MarginCalcModeEnum margin_mode; int margin_stopout; ENUM_ACCOUNT_STOPOUT_MODE margin_stopout_mode; double margin_initial; double margin_maintenance; double margin_hedged; double margin_divider; char margin_currency[12]; Padding p5[4]; double comm_base; int comm_type; int comm_lots; int from_bar; int to_bar; int start_period[6]; int from; int to; int freeze_level; int reserved[61]; }; Coding help PrintFormat()を調べてすぐ使える例を適用する MetaTraderプログラムを簡単かつ迅速に開発するためのライブラリ(第12部): 「口座」オブジェクトクラスと口座オブジェクトのコレクション Mladen Rakic 2014.04.11 05:37 #2584 Ovo: ありがとうございます。FXTの実際のフォーマットはよくわからないのですが、私が持っているのはローソクをレンダリングするものです。 まず、MQL4のサイトで401バージョンを見つけ、それが405のリバースエンジニアリングの助けになりました。次に、405バージョンを含むCSV2FXTスクリプトを見つけましたが、まだ完全に解析していません。 私は、バグはむしろヘッダーのコンテンツにあると思います。 だから今、私はローソクの形よりもむしろFXTヘッダに焦点を当てるべきである(それは非常に適切にレンダリングされる)。 私は現在、この構造をFXTに使用しています。 struct Shortdate { int date; }; struct Padding { char padding; }; struct MT4FxtCandle { datetime openTime; double open; double high; double low; double close; uint volume; uint spread; Shortdate tickTime; int flag; }; struct MT4FxtHeader { int version; char copyright[64]; char server[128]; char symbol[12]; int period; TestModelEnum model; int bars; Shortdate fromdate; Shortdate todate; Padding p1[4]; double modelquality; char currency[12]; int spread; int digits; Padding p2[4]; double point; int lot_min; int lot_max; int lot_step; int stops_level; int gtc_pendings; Padding p3[4]; double contract_size; double tick_value; double tick_size; ProfitCalcModeEnum profit_mode; int swap_enable; int swap_type; Padding p4[4]; double swap_long; double swap_short; int swap_rollover3days; int leverage; FreeMarginCalcModeEnum free_margin_mode; MarginCalcModeEnum margin_mode; int margin_stopout; ENUM_ACCOUNT_STOPOUT_MODE margin_stopout_mode; double margin_initial; double margin_maintenance; double margin_hedged; double margin_divider; char margin_currency[12]; Padding p5[4]; double comm_base; int comm_type; int comm_lots; int from_bar; int to_bar; int start_period[6]; int from; int to; int freeze_level; int reserved[61]; }; 私もいくつかのより多くの情報を見つけるためにしようとします hstとfxtファイルのヘッダに関するいくつかの詳細は、彼らがリリースされなかったので、私たちはヘッダの形式を100%正確に解読することができるかどうかわからない。 Dedoctor 2014.04.11 06:42 #2585 こんにちは、私は丸い数字ではなく、私自身の特別な数字を使っています。私の数字は、5、15、31、45、67です。あなたの親切な応答を待っているすぐに ファイル: round_numbers_5_digit.mq4 5 kb tfi_markets 2014.04.13 10:20 #2586 オーダーモディファイエラー1 こんにちは、皆さん。 どなたか助けていただけないでしょうか。コンパイルエラーは出ないのですが、バックテスト中に バックテスト中にMT4から "OrderModify Error1 "を受け取りました。何か良い方法はありますか? を表示させることができますか? bool ModifyOrder(int nOrderType,int ord_ticket,double op,double price,double tp,color mColor=CLR_NONE) { int cnt,err; double myStop; myStop=ValidStopLoss(nOrderType,price); cnt=0; while(cnt<totalTries) { if(OrderModify(ord_ticket,op,myStop,tp,0,mColor)) { return(true); } else { err=GetLastError(); if(err>1) Print(cnt," Error modifying order : (",ord_ticket,") "+ErrorDescription(err)," err ",err); if(err>0) cnt++; Sleep(retryDelay); } } return(false); } [/CODE] void OpenBuyOrder() { int ticket; int err,digits; double myStopLoss=0,myTakeProfit=0,myPrice=0; myPrice=MarketInfo(Symbol(),MODE_ASK); myStopLoss=0; if(StopLoss>0) myStopLoss=myPrice-StopLoss*point; if(myStopLoss!=0) ValidStopLoss(OP_BUY,myStopLoss); myTakeProfit=0; if(UseTakeProfit && TakeProfit>0) myTakeProfit=myPrice+TakeProfit*point; // Normalize all price / stoploss / takeprofit to the proper # of digits. digits=MarketInfo(Symbol(),MODE_DIGITS); if(digits>0) { myPrice=NormalizeDouble(myPrice,digits); myStopLoss=NormalizeDouble(myStopLoss,digits); myTakeProfit=NormalizeDouble(myTakeProfit,digits); } ticket=OrderSend(Symbol(),OP_BUY,lotMM,myPrice,Slippage,myStopLoss,myTakeProfit,setup,MagicNumber,0,LimeGreen); if(ticket>0 && ModifyOrder(OP_BUY,ticket,OrderOpenPrice(),myStopLoss,myTakeProfit,CLR_NONE)) { if(Debug) Print("BUY order opened : ",OrderOpenPrice()); } else { err=GetLastError(); Print("Error opening BUY order : ("+err+") "+ErrorDescription(err)); } } [/CODE] [CODE] void OpenSellOrder() { int ticket; int err,digits; double myStopLoss=0,myTakeProfit=0,myPrice=0; myPrice=MarketInfo(Symbol(),MODE_BID); myStopLoss=0; if(StopLoss>0) myStopLoss=myPrice+StopLoss*point; if(myStopLoss!=0) ValidStopLoss(OP_SELL,myStopLoss); myTakeProfit=0; if(UseTakeProfit && TakeProfit>0) myTakeProfit=myPrice-TakeProfit*point; // Normalize all price / stoploss / takeprofit to the proper # of digits. digits=MarketInfo(Symbol(),MODE_DIGITS); if(digits>0) { myPrice=NormalizeDouble(myPrice,digits); myStopLoss=NormalizeDouble(myStopLoss,digits); myTakeProfit=NormalizeDouble(myTakeProfit,digits); } ticket=OrderSend(Symbol(),OP_SELL,lotMM,myPrice,Slippage,myStopLoss,myTakeProfit,setup,MagicNumber,0,Red); if(ticket>0 && ModifyOrder(OP_SELL,ticket,OrderOpenPrice(),myStopLoss,myTakeProfit,CLR_NONE)) { if(Debug) Print("SELL order opened : ",OrderOpenPrice()); } else { err=GetLastError(); Print("Error opening SELL order : ("+err+") "+ErrorDescription(err)); } return(0); } [CODE] int HandleTrailingStop(int type,int ticket,double op,double os,double tp) { double pt,TS=0,myAsk,myBid; switch(type) { case OP_BUY: { myBid=MarketInfo(Symbol(),MODE_BID); switch(TrailingStopType) { case 1: pt=point*StopLoss; if(myBid-os>pt) ModifyOrder(type,ticket,op,myBid-pt,tp,Aqua); break; case 2: pt=point*TrailingStop; if(myBid-op>pt && os<myBid-pt) ModifyOrder(type,ticket,op,myBid-pt,tp,Aqua); break; } return(0); break; } case OP_SELL: { myAsk=MarketInfo(Symbol(),MODE_ASK); switch(TrailingStopType) { case 1: pt=point*StopLoss; if(os-myAsk>pt) ModifyOrder(type,ticket,op,myAsk+pt,tp,Aqua); break; case 2: pt=point*TrailingStop; if(op-myAsk>pt && os>myAsk+pt) ModifyOrder(type,ticket,op,myAsk+pt,tp,Aqua); break; } } return(0); } } よろしくお願いします。 Coding help help with orderclose [アーカイブ!】どんなルーキーの質問でも、フォーラムを散らかさないように。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 2. Mladen Rakic 2014.04.13 10:45 #2587 tfi_markets:オーダーモディファイエラー1皆さん、こんにちは。どなたか助けていただけないでしょうか。コンパイルエラーは出ないのですが、バックテスト中にMT4から "OrderModify Error1 "を受け取っています。何か良い方法はありますか?私のコードで? bool ModifyOrder(int nOrderType,int ord_ticket,double op,double price,double tp,color mColor=CLR_NONE) { int cnt,err; double myStop; myStop=ValidStopLoss(nOrderType,price); cnt=0; while(cnt<totalTries) { if(OrderModify(ord_ticket,op,myStop,tp,0,mColor)) { return(true); } else { err=GetLastError(); if(err>1) Print(cnt," Error modifying order : (",ord_ticket,") "+ErrorDescription(err)," err ",err); if(err>0) cnt++; Sleep(retryDelay); } } return(false); } [/CODE] void OpenBuyOrder() { int ticket; int err,digits; double myStopLoss=0,myTakeProfit=0,myPrice=0; myPrice=MarketInfo(Symbol(),MODE_ASK); myStopLoss=0; if(StopLoss>0) myStopLoss=myPrice-StopLoss*point; if(myStopLoss!=0) ValidStopLoss(OP_BUY,myStopLoss); myTakeProfit=0; if(UseTakeProfit && TakeProfit>0) myTakeProfit=myPrice+TakeProfit*point; // Normalize all price / stoploss / takeprofit to the proper # of digits. digits=MarketInfo(Symbol(),MODE_DIGITS); if(digits>0) { myPrice=NormalizeDouble(myPrice,digits); myStopLoss=NormalizeDouble(myStopLoss,digits); myTakeProfit=NormalizeDouble(myTakeProfit,digits); } ticket=OrderSend(Symbol(),OP_BUY,lotMM,myPrice,Slippage,myStopLoss,myTakeProfit,setup,MagicNumber,0,LimeGreen); if(ticket>0 && ModifyOrder(OP_BUY,ticket,OrderOpenPrice(),myStopLoss,myTakeProfit,CLR_NONE)) { if(Debug) Print("BUY order opened : ",OrderOpenPrice()); } else { err=GetLastError(); Print("Error opening BUY order : ("+err+") "+ErrorDescription(err)); } } [/CODE] [CODE] void OpenSellOrder() { int ticket; int err,digits; double myStopLoss=0,myTakeProfit=0,myPrice=0; myPrice=MarketInfo(Symbol(),MODE_BID); myStopLoss=0; if(StopLoss>0) myStopLoss=myPrice+StopLoss*point; if(myStopLoss!=0) ValidStopLoss(OP_SELL,myStopLoss); myTakeProfit=0; if(UseTakeProfit && TakeProfit>0) myTakeProfit=myPrice-TakeProfit*point; // Normalize all price / stoploss / takeprofit to the proper # of digits. digits=MarketInfo(Symbol(),MODE_DIGITS); if(digits>0) { myPrice=NormalizeDouble(myPrice,digits); myStopLoss=NormalizeDouble(myStopLoss,digits); myTakeProfit=NormalizeDouble(myTakeProfit,digits); } ticket=OrderSend(Symbol(),OP_SELL,lotMM,myPrice,Slippage,myStopLoss,myTakeProfit,setup,MagicNumber,0,Red); if(ticket>0 && ModifyOrder(OP_SELL,ticket,OrderOpenPrice(),myStopLoss,myTakeProfit,CLR_NONE)) { if(Debug) Print("SELL order opened : ",OrderOpenPrice()); } else { err=GetLastError(); Print("Error opening SELL order : ("+err+") "+ErrorDescription(err)); } return(0); } [CODE] int HandleTrailingStop(int type,int ticket,double op,double os,double tp) { double pt,TS=0,myAsk,myBid; switch(type) { case OP_BUY: { myBid=MarketInfo(Symbol(),MODE_BID); switch(TrailingStopType) { case 1: pt=point*StopLoss; if(myBid-os>pt) ModifyOrder(type,ticket,op,myBid-pt,tp,Aqua); break; case 2: pt=point*TrailingStop; if(myBid-op>pt && os<myBid-pt) ModifyOrder(type,ticket,op,myBid-pt,tp,Aqua); break; } return(0); break; } case OP_SELL: { myAsk=MarketInfo(Symbol(),MODE_ASK); switch(TrailingStopType) { case 1: pt=point*StopLoss; if(os-myAsk>pt) ModifyOrder(type,ticket,op,myAsk+pt,tp,Aqua); break; case 2: pt=point*TrailingStop; if(op-myAsk>pt && os>myAsk+pt) ModifyOrder(type,ticket,op,myAsk+pt,tp,Aqua); break; } } return(0); } } よろしくお願いします。 tfi_markets エラー1はエラーではなく、あなたが行おうとしている変更が注文の変更にならない(注文は変わらない)ことを単に意味しています。そのままにしておくこともできますし、変更しようとした部分が代入しようとした値とは異なるかどうかを確認 するだけでもよいでしょう。 lambic 2014.04.13 10:51 #2588 こんにちは、私はrenkoのチャートの先頭からの日数を取得するために助けを必要としています。 助けてくれてありがとうございます。 Mladen Rakic 2014.04.13 10:58 #2589 lambic: こんにちは、私はrenkoチャートの開始からの日数を取得するために助けを必要とする。 助けてくれてありがとう renkoの最初の(最も古い)バーからということであれば、単純に次のようにします。 int numOfDays = (Time[0]-Time)/(1440*60); lambic 2014.04.13 11:19 #2590 mladen: renkoの最初の(最も古い)バーからという意味なら、単純に次のようにします:int numOfDays = (Time[0]-Time)/(1440*60); とてもシンプル ! 配列関数を探して いたら、単純にTime[]でした。バカですいません。ありがとうございました。 1...252253254255256257258259260261262263264265266...786 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
私は、カスタムチャートのtick by tickバックテストを実現しようとしています。私はそれについての経験を持っていないので、おそらく誰かが私に一歩踏み出すための助けの手を与えることができます。私は明らかに何か間違ったことをやっているからです。
私は、CSVファイルから相場を読み取り、FXTファイルとHSTファイルに保存しています。
FXTファイルは読み取り専用にしています。問題は、ストラテジー・テスターが 私のFXTファイルを受け入れず、停止してしまうことです。
FXTファイルとHSTファイルの整合性はどの程度なのでしょうか?例えば、レンジバーチャートは、HSTでは1ポイントの均一なギャップがありますが、FXTでは適度なギャップがあります。これは問題なのでしょうか?
私はカスタムチャートのtick by tickバックテストを実現しようとしています。私はそれについて経験がないので、おそらく誰かが私に一歩踏み出すためのヘルプハンドを与えることができます。私はどうやら何か間違ったことをしているようなので。
CSV ファイルから見積書を読み込んで、FXT ファイルと HST ファイルに保存しています。
そして、FXTファイルを読み取り専用にマークしています。問題は、ストラテジーテスターが私のFXTファイルを受け入れず、停止してしまうことです。
FXTファイルとHSTファイルの整合性はどの程度なのでしょうか?例えば、レンジバーチャートは、HSTでは1ポイントの均一なギャップがありますが、FXTでは適度なギャップがあります。これは問題なのでしょうか?
オボ
バックテストでは、1ポイントよりもはるかに大きなギャップがfxtファイルに作られます。fxtファイルのフォーマットは適切(新しい)でしょうか?
Ovo それは全く問題ないでしょう(バックテストの際、その1ポイントよりはるかに大きなギャップがfxtファイルに作られます)。fxtファイルのフォーマットは適切(新しい)でしょうか?
ありがとうございます、問題ないことを祈りました。
FXTの実際のフォーマットはよくわからないのですが、私が持っているのはローソクをレンダリングするものです。
まず、MQL4のサイトで401バージョンを見つけ、それが405のリバースエンジニアリングに役立ちました。次に、405バージョンを含むCSV2FXTスクリプトを見つけましたが、まだ完全に解析していません。
私は、バグはむしろヘッダーのコンテンツにあると思います。
だから今、私はローソクの形よりもむしろFXTヘッダに焦点を当てるべきである(それは非常に適切にレンダリングされる)。
私は現在、FXTにこの構造を使っています。
struct Shortdate {
int date;
};
struct Padding {
char padding;
};
struct MT4FxtCandle {
datetime openTime;
double open;
double high;
double low;
double close;
uint volume;
uint spread;
Shortdate tickTime;
int flag;
};
struct MT4FxtHeader {
int version;
char copyright[64];
char server[128];
char symbol[12];
int period;
TestModelEnum model;
int bars;
Shortdate fromdate;
Shortdate todate;
Padding p1[4];
double modelquality;
char currency[12];
int spread;
int digits;
Padding p2[4];
double point;
int lot_min;
int lot_max;
int lot_step;
int stops_level;
int gtc_pendings;
Padding p3[4];
double contract_size;
double tick_value;
double tick_size;
ProfitCalcModeEnum profit_mode;
int swap_enable;
int swap_type;
Padding p4[4];
double swap_long;
double swap_short;
int swap_rollover3days;
int leverage;
FreeMarginCalcModeEnum free_margin_mode;
MarginCalcModeEnum margin_mode;
int margin_stopout;
ENUM_ACCOUNT_STOPOUT_MODE margin_stopout_mode;
double margin_initial;
double margin_maintenance;
double margin_hedged;
double margin_divider;
char margin_currency[12];
Padding p5[4];
double comm_base;
int comm_type;
int comm_lots;
int from_bar;
int to_bar;
int start_period[6];
int from;
int to;
int freeze_level;
int reserved[61];
};
ありがとうございます。
FXTの実際のフォーマットはよくわからないのですが、私が持っているのはローソクをレンダリングするものです。
まず、MQL4のサイトで401バージョンを見つけ、それが405のリバースエンジニアリングの助けになりました。次に、405バージョンを含むCSV2FXTスクリプトを見つけましたが、まだ完全に解析していません。
私は、バグはむしろヘッダーのコンテンツにあると思います。
だから今、私はローソクの形よりもむしろFXTヘッダに焦点を当てるべきである(それは非常に適切にレンダリングされる)。
私は現在、この構造をFXTに使用しています。
struct Shortdate {
int date;
};
struct Padding {
char padding;
};
struct MT4FxtCandle {
datetime openTime;
double open;
double high;
double low;
double close;
uint volume;
uint spread;
Shortdate tickTime;
int flag;
};
struct MT4FxtHeader {
int version;
char copyright[64];
char server[128];
char symbol[12];
int period;
TestModelEnum model;
int bars;
Shortdate fromdate;
Shortdate todate;
Padding p1[4];
double modelquality;
char currency[12];
int spread;
int digits;
Padding p2[4];
double point;
int lot_min;
int lot_max;
int lot_step;
int stops_level;
int gtc_pendings;
Padding p3[4];
double contract_size;
double tick_value;
double tick_size;
ProfitCalcModeEnum profit_mode;
int swap_enable;
int swap_type;
Padding p4[4];
double swap_long;
double swap_short;
int swap_rollover3days;
int leverage;
FreeMarginCalcModeEnum free_margin_mode;
MarginCalcModeEnum margin_mode;
int margin_stopout;
ENUM_ACCOUNT_STOPOUT_MODE margin_stopout_mode;
double margin_initial;
double margin_maintenance;
double margin_hedged;
double margin_divider;
char margin_currency[12];
Padding p5[4];
double comm_base;
int comm_type;
int comm_lots;
int from_bar;
int to_bar;
int start_period[6];
int from;
int to;
int freeze_level;
int reserved[61];
};
私もいくつかのより多くの情報を見つけるためにしようとします
hstとfxtファイルのヘッダに関するいくつかの詳細は、彼らがリリースされなかったので、私たちはヘッダの形式を100%正確に解読することができるかどうかわからない。
こんにちは、私は丸い数字ではなく、私自身の特別な数字を使っています。私の数字は、5、15、31、45、67です。あなたの親切な応答を待っているすぐに
オーダーモディファイエラー1
こんにちは、皆さん。
どなたか助けていただけないでしょうか。コンパイルエラーは出ないのですが、バックテスト中に
バックテスト中にMT4から "OrderModify Error1 "を受け取りました。何か良い方法はありますか?
を表示させることができますか?
bool ModifyOrder(int nOrderType,int ord_ticket,double op,double price,double tp,color mColor=CLR_NONE)
{
int cnt,err;
double myStop;
myStop=ValidStopLoss(nOrderType,price);
cnt=0;
while(cnt<totalTries)
{
if(OrderModify(ord_ticket,op,myStop,tp,0,mColor))
{
return(true);
}
else
{
err=GetLastError();
if(err>1) Print(cnt," Error modifying order : (",ord_ticket,") "+ErrorDescription(err)," err ",err);
if(err>0) cnt++;
Sleep(retryDelay);
}
}
return(false);
}
[/CODE]
void OpenBuyOrder()
{
int ticket;
int err,digits;
double myStopLoss=0,myTakeProfit=0,myPrice=0;
myPrice=MarketInfo(Symbol(),MODE_ASK);
myStopLoss=0;
if(StopLoss>0) myStopLoss=myPrice-StopLoss*point;
if(myStopLoss!=0) ValidStopLoss(OP_BUY,myStopLoss);
myTakeProfit=0;
if(UseTakeProfit && TakeProfit>0) myTakeProfit=myPrice+TakeProfit*point;
// Normalize all price / stoploss / takeprofit to the proper # of digits.
digits=MarketInfo(Symbol(),MODE_DIGITS);
if(digits>0)
{
myPrice=NormalizeDouble(myPrice,digits);
myStopLoss=NormalizeDouble(myStopLoss,digits);
myTakeProfit=NormalizeDouble(myTakeProfit,digits);
}
ticket=OrderSend(Symbol(),OP_BUY,lotMM,myPrice,Slippage,myStopLoss,myTakeProfit,setup,MagicNumber,0,LimeGreen);
if(ticket>0 && ModifyOrder(OP_BUY,ticket,OrderOpenPrice(),myStopLoss,myTakeProfit,CLR_NONE))
{
if(Debug) Print("BUY order opened : ",OrderOpenPrice());
}
else
{
err=GetLastError();
Print("Error opening BUY order : ("+err+") "+ErrorDescription(err));
}
}
[/CODE]
[CODE]
void OpenSellOrder()
{
int ticket;
int err,digits;
double myStopLoss=0,myTakeProfit=0,myPrice=0;
myPrice=MarketInfo(Symbol(),MODE_BID);
myStopLoss=0;
if(StopLoss>0) myStopLoss=myPrice+StopLoss*point;
if(myStopLoss!=0) ValidStopLoss(OP_SELL,myStopLoss);
myTakeProfit=0;
if(UseTakeProfit && TakeProfit>0) myTakeProfit=myPrice-TakeProfit*point;
// Normalize all price / stoploss / takeprofit to the proper # of digits.
digits=MarketInfo(Symbol(),MODE_DIGITS);
if(digits>0)
{
myPrice=NormalizeDouble(myPrice,digits);
myStopLoss=NormalizeDouble(myStopLoss,digits);
myTakeProfit=NormalizeDouble(myTakeProfit,digits);
}
ticket=OrderSend(Symbol(),OP_SELL,lotMM,myPrice,Slippage,myStopLoss,myTakeProfit,setup,MagicNumber,0,Red);
if(ticket>0 && ModifyOrder(OP_SELL,ticket,OrderOpenPrice(),myStopLoss,myTakeProfit,CLR_NONE))
{
if(Debug) Print("SELL order opened : ",OrderOpenPrice());
}
else
{
err=GetLastError();
Print("Error opening SELL order : ("+err+") "+ErrorDescription(err));
}
return(0);
}
[CODE]
int HandleTrailingStop(int type,int ticket,double op,double os,double tp)
{
double pt,TS=0,myAsk,myBid;
switch(type)
{
case OP_BUY:
{
myBid=MarketInfo(Symbol(),MODE_BID);
switch(TrailingStopType)
{
case 1: pt=point*StopLoss;
if(myBid-os>pt)
ModifyOrder(type,ticket,op,myBid-pt,tp,Aqua);
break;
case 2: pt=point*TrailingStop;
if(myBid-op>pt && os<myBid-pt)ModifyOrder(type,ticket,op,myBid-pt,tp,Aqua);
break;
}
return(0);
break;
}
case OP_SELL:
{
myAsk=MarketInfo(Symbol(),MODE_ASK);
switch(TrailingStopType)
{
case 1: pt=point*StopLoss;
if(os-myAsk>pt)
ModifyOrder(type,ticket,op,myAsk+pt,tp,Aqua);
break;
case 2: pt=point*TrailingStop;
if(op-myAsk>pt && os>myAsk+pt)
ModifyOrder(type,ticket,op,myAsk+pt,tp,Aqua);
break;
}
}
return(0);
}
}
よろしくお願いします。
オーダーモディファイエラー1
皆さん、こんにちは。
どなたか助けていただけないでしょうか。コンパイルエラーは出ないのですが、バックテスト中に
MT4から "OrderModify Error1 "を受け取っています。何か良い方法はありますか?
私のコードで?
bool ModifyOrder(int nOrderType,int ord_ticket,double op,double price,double tp,color mColor=CLR_NONE)
{
int cnt,err;
double myStop;
myStop=ValidStopLoss(nOrderType,price);
cnt=0;
while(cnt<totalTries)
{
if(OrderModify(ord_ticket,op,myStop,tp,0,mColor))
{
return(true);
}
else
{
err=GetLastError();
if(err>1) Print(cnt," Error modifying order : (",ord_ticket,") "+ErrorDescription(err)," err ",err);
if(err>0) cnt++;
Sleep(retryDelay);
}
}
return(false);
}
[/CODE]
void OpenBuyOrder()
{
int ticket;
int err,digits;
double myStopLoss=0,myTakeProfit=0,myPrice=0;
myPrice=MarketInfo(Symbol(),MODE_ASK);
myStopLoss=0;
if(StopLoss>0) myStopLoss=myPrice-StopLoss*point;
if(myStopLoss!=0) ValidStopLoss(OP_BUY,myStopLoss);
myTakeProfit=0;
if(UseTakeProfit && TakeProfit>0) myTakeProfit=myPrice+TakeProfit*point;
// Normalize all price / stoploss / takeprofit to the proper # of digits.
digits=MarketInfo(Symbol(),MODE_DIGITS);
if(digits>0)
{
myPrice=NormalizeDouble(myPrice,digits);
myStopLoss=NormalizeDouble(myStopLoss,digits);
myTakeProfit=NormalizeDouble(myTakeProfit,digits);
}
ticket=OrderSend(Symbol(),OP_BUY,lotMM,myPrice,Slippage,myStopLoss,myTakeProfit,setup,MagicNumber,0,LimeGreen);
if(ticket>0 && ModifyOrder(OP_BUY,ticket,OrderOpenPrice(),myStopLoss,myTakeProfit,CLR_NONE))
{
if(Debug) Print("BUY order opened : ",OrderOpenPrice());
}
else
{
err=GetLastError();
Print("Error opening BUY order : ("+err+") "+ErrorDescription(err));
}
}
[/CODE]
[CODE]
void OpenSellOrder()
{
int ticket;
int err,digits;
double myStopLoss=0,myTakeProfit=0,myPrice=0;
myPrice=MarketInfo(Symbol(),MODE_BID);
myStopLoss=0;
if(StopLoss>0) myStopLoss=myPrice+StopLoss*point;
if(myStopLoss!=0) ValidStopLoss(OP_SELL,myStopLoss);
myTakeProfit=0;
if(UseTakeProfit && TakeProfit>0) myTakeProfit=myPrice-TakeProfit*point;
// Normalize all price / stoploss / takeprofit to the proper # of digits.
digits=MarketInfo(Symbol(),MODE_DIGITS);
if(digits>0)
{
myPrice=NormalizeDouble(myPrice,digits);
myStopLoss=NormalizeDouble(myStopLoss,digits);
myTakeProfit=NormalizeDouble(myTakeProfit,digits);
}
ticket=OrderSend(Symbol(),OP_SELL,lotMM,myPrice,Slippage,myStopLoss,myTakeProfit,setup,MagicNumber,0,Red);
if(ticket>0 && ModifyOrder(OP_SELL,ticket,OrderOpenPrice(),myStopLoss,myTakeProfit,CLR_NONE))
{
if(Debug) Print("SELL order opened : ",OrderOpenPrice());
}
else
{
err=GetLastError();
Print("Error opening SELL order : ("+err+") "+ErrorDescription(err));
}
return(0);
}
[CODE]
int HandleTrailingStop(int type,int ticket,double op,double os,double tp)
{
double pt,TS=0,myAsk,myBid;
switch(type)
{
case OP_BUY:
{
myBid=MarketInfo(Symbol(),MODE_BID);
switch(TrailingStopType)
{
case 1: pt=point*StopLoss;
if(myBid-os>pt)
ModifyOrder(type,ticket,op,myBid-pt,tp,Aqua);
break;
case 2: pt=point*TrailingStop;
if(myBid-op>pt && os<myBid-pt)ModifyOrder(type,ticket,op,myBid-pt,tp,Aqua);
break;
}
return(0);
break;
}
case OP_SELL:
{
myAsk=MarketInfo(Symbol(),MODE_ASK);
switch(TrailingStopType)
{
case 1: pt=point*StopLoss;
if(os-myAsk>pt)
ModifyOrder(type,ticket,op,myAsk+pt,tp,Aqua);
break;
case 2: pt=point*TrailingStop;
if(op-myAsk>pt && os>myAsk+pt)
ModifyOrder(type,ticket,op,myAsk+pt,tp,Aqua);
break;
}
}
return(0);
}
}
tfi_markets
エラー1はエラーではなく、あなたが行おうとしている変更が注文の変更にならない(注文は変わらない)ことを単に意味しています。そのままにしておくこともできますし、変更しようとした部分が代入しようとした値とは異なるかどうかを確認 するだけでもよいでしょう。
こんにちは、私はrenkoのチャートの先頭からの日数を取得するために助けを必要としています。
助けてくれてありがとうございます。
こんにちは、私はrenkoチャートの開始からの日数を取得するために助けを必要とする。 助けてくれてありがとう
renkoの最初の(最も古い)バーからということであれば、単純に次のようにします。
int numOfDays = (Time[0]-Time)/(1440*60);
renkoの最初の(最も古い)バーからという意味なら、単純に次のようにします:int numOfDays = (Time[0]-Time)/(1440*60);
とてもシンプル ! 配列関数を探して いたら、単純にTime[]でした。バカですいません。ありがとうございました。