MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 681 1...674675676677678679680681682683684685686687688...1953 新しいコメント Ghabo 2018.10.29 23:22 #6801 Igor Makanu:おそらく、このような売り方をしているのでしょう。 profit=NormalizeDouble((OrderOpenPrice()-Ask)*MarketInfo(_Symbol,MODE_TICKVALUE) *lot/Point,2); をBidで買う、つまり( Bid -OrderOpenPrice() ) で買います。TakeProfit =100 ポイント Lot = 0.1, TPでポジションをクローズした場合、その通貨のオープンポジションの利益はいくらになりますか? profit=NormalizeDouble((OrderOpenPrice()-Тейк_Профит*Point)*MarketInfo(_Symbol,MODE_TICKVALUE)*lot/Point,2); そのようなことはありません。 Ghabo 2018.10.29 23:27 #6802 Vitaly Muzichenko: 操作の必要性:ロット→マネー→距離、そしてティックのコストお金は、それを見つけるためにあるのです ) Igor Makanu 2018.10.30 04:38 #6803 Vitaly Muzichenko:このソリューションでは、手数料やスワップは考慮されていません。ポイントは利益が出ているようですが、コストは赤字です。OrderProfit()+OrderComission()+OrderSwap() の式で手数料とスワップがあるのが気に食わない ヘルプによると、手数料はポイントでも預金通貨 でもよいとのことですが、この計算式はこれを考慮しておらず、テストでは益となるよりも害となる可能性がありますが、これは好みの問題でしょう。ガボ。Take_Profit =100ポイント、lot =0.1、TPでポジションをクローズした場合、その通貨のオープンポジションの利益はいくらになりますか? そういうわけにはいきません。数学は得意じゃない?;) でなければなりません。 profit=NormalizeDouble((Take_Profit*Point)*MarketInfo(_Symbol,MODE_TICKVALUE)*lot/Point,2)。 短縮されると profit=NormalizeDouble(lot *TakeProfit*MarketInfo(_Symbol,MODE_TICKVALUE),2); Artyom Trishkin 2018.10.30 04:45 #6804 Vitaly Muzichenko:ここでの意味は、OrderProfit() を計算に使用することです。TakeProfitが作動したときに20米ドルの利益を得るために、注文を出す前にポジションの ロットを計算するにはどうすればよいですか?OrderProfit() はここでは役に立ちません - まだポジションがないのです。 あるいは、0.1ロットで開始したときに20米ドルの利益を得るために、将来のポジションのTakeProfitはどのようになりますか?そして、ここでもOrderProfit()は役に立ちません - 同じ理由からです。 また、別の方法として、0.1ロットで建てたときに利用可能な資金の3%以下の損失となるように、将来のポジションにどのようなストップロスを設定すべきでしょうか?そして、ここでもOrderProfit()は役に立ちません - 同じ理由からです。 更新:すべての計算は、手数料とスワップがわからないと概算になります。1セントや1ポイントの精度が必要な場合は、ストップオーダーを「その場で」調整しなければなりません。 Vitaly Muzichenko 2018.10.30 04:50 #6805 Artyom Trishkin:ポジションを建てる ために注文を出す前に、将来のポジションのロットをどのように計算すれば、takeprofitが発動したときに20米ドルの利益を得ることができますか?OrderProfit() はここでは役に立ちません - まだポジションがありません。 言い換えれば、0.1ロットでオープンした場合、20米ドルの利益を得るために、将来のポジションのtakeprofitはどうなりますか?そして、ここでもOrderProfit()は役に立ちません - 同じ理由からです。 開く前に計算しなければならないことを書いて理解し、すぐにメッセージを削除したところです。なんて賢い返事なんだ) そんなことを書いて、入力パラメータに手数料として1ロットあたりの金額を入力したことがあります。 Dmitry Belov 2018.10.31 06:03 #6806 こんにちは、解りません、助けてください。このコードのどこが問題なのでしょうか?コメントで平均値を表示していますが、刻み ごとに増えていくのでしょうか?ヘルプ:-))) for(shift = 0; shift <= Bars-1; shift++) { zz = iCustom(NULL, 0, "ZigZag", ExtDepth, ExtDeviation, ExtBackstep, 0, shift); if(zz > 0.0) { HZZ[ww]=zz; ww++; } } for(ww=0;ww<=nn;ww++){ if(HZZ[ww]>HZZ[ww+1]){SredRazmax += HZZ[ww];} if(HZZ[ww]<HZZ[ww+1]){SredRazmin += HZZ[ww+1];} Comment("Средний размах = ", (SredRazmax-SredRazmin)/nn,",",HZZ[0],",",HZZ[1],",",HZZ[2],",",HZZ[3],",",HZZ[4]); Igor Makanu 2018.10.31 06:10 #6807 Dmitry Belov: は、刻々と増えて いくのでしょうか?ヘルプ:-)))それは、あなたが提出したコードで、SredRazmaxとSredRazmin 変数を初期化していない、すべてのtickをカウントしていることを意味します。 使う前に変数を初期化するのは良い習慣です。大学でもそう教えますし、バグを見つけるのにかかる時間を短縮できます;) Oleg Remizov 2018.10.31 19:52 #6808 同僚、なぜこのコードはstrategy testerでは実行を拒否されるが、リアルタイムでは正しく実行されるのですか?具体的には、OnChartEvent()関数について話して います。テスターでの可視化モードでは、ボタンをクリックしても実行されません。 input double lot=0.1; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { ButtonCreate("ButtonBuy",100,100,200,40,"Buy",15,clrBlue); ButtonCreate("ButtonSell",100,200,200,40,"Sell",15,clrRed); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { long cid=ChartID(); if(id==CHARTEVENT_OBJECT_CLICK && sparam=="ButtonBuy") { if(OrderSend(_Symbol,OP_BUY,lot,Ask,200,0,0,NULL,0,0,clrBlue)==-1) Print("Error: ",GetLastError()); ObjectSetInteger(cid,"ButtonBuy",OBJPROP_STATE,false); } if(id==CHARTEVENT_OBJECT_CLICK && sparam=="ButtonSell") { if(OrderSend(_Symbol,OP_SELL,lot,Bid,200,0,0,NULL,0,0,clrRed)==-1) Print("Error: ",GetLastError()); ObjectSetInteger(cid,"ButtonSell",OBJPROP_STATE,false); } } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| ButtonCreate | //+------------------------------------------------------------------+ void ButtonCreate(string name,int x,int y,int width,int height, string text,int font_size,color back_clr) { long cid=ChartID(); int subWind=0; ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER; string font="Cambria"; color text_clr=clrBlack; color border_clr=clrBlack; bool state=false; bool back=false; bool selectable=false; bool selected=false; bool hidden=true; long zorder=0; if(ObjectFind(cid,name)==-1) { ObjectCreate(cid,name,OBJ_BUTTON,subWind,0,0); ObjectSetInteger(cid,name,OBJPROP_XDISTANCE,x); ObjectSetInteger(cid,name,OBJPROP_YDISTANCE,y); ObjectSetInteger(cid,name,OBJPROP_XSIZE,width); ObjectSetInteger(cid,name,OBJPROP_YSIZE,height); ObjectSetInteger(cid,name,OBJPROP_CORNER,corner); ObjectSetString(cid,name,OBJPROP_TEXT,text); ObjectSetString(cid,name,OBJPROP_FONT,font); ObjectSetInteger(cid,name,OBJPROP_FONTSIZE,font_size); ObjectSetInteger(cid,name,OBJPROP_COLOR,text_clr); ObjectSetInteger(cid,name,OBJPROP_BGCOLOR,back_clr); ObjectSetInteger(cid,name,OBJPROP_BORDER_COLOR,border_clr); ObjectSetInteger(cid,name,OBJPROP_BACK,back); ObjectSetInteger(cid,name,OBJPROP_STATE,state); ObjectSetInteger(cid,name,OBJPROP_SELECTABLE,selectable); ObjectSetInteger(cid,name,OBJPROP_SELECTED,selected); ObjectSetInteger(cid,name,OBJPROP_HIDDEN,hidden); ObjectSetInteger(cid,name,OBJPROP_ZORDER,zorder); } } //+------------------------------------------------------------------+ Artyom Trishkin 2018.10.31 19:59 #6809 Oleg Remizov:同僚、なぜこのコードはstrategy testerでは実行を拒否されるが、リアルタイムでは正しく実行されるのですか?具体的には、OnChartEvent()関数について話して います。テスターでの可視化モードでは、ボタンをクリックしても実行されません。 MT4のテスターでOnChartEvent()が動作しないため。テスターでボタンの状態フラグを確認する。 Oleg Remizov 2018.10.31 20:09 #6810 Artyom Trishkin: MT4ではOnChartEvent()がテスターで動作しないため。テスターでボタンの状態フラグを確認する。ありがとうございました。その疑いはあったのですが、ヘルプにOnChartEvent() がテスターで動かないという情報は見つかりませんでした。 1...674675676677678679680681682683684685686687688...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
おそらく、このような売り方をしているのでしょう。
profit=NormalizeDouble((OrderOpenPrice()-Ask)*MarketInfo(_Symbol,MODE_TICKVALUE) *lot/Point,2);
をBidで買う、つまり( Bid -OrderOpenPrice() ) で買います。
TakeProfit =100 ポイント Lot = 0.1, TPでポジションをクローズした場合、その通貨のオープンポジションの利益はいくらになりますか?
そのようなことはありません。
操作の必要性:ロット→マネー→距離、そしてティックのコスト
お金は、それを見つけるためにあるのです )
このソリューションでは、手数料やスワップは考慮されていません。ポイントは利益が出ているようですが、コストは赤字です。
OrderProfit()+OrderComission()+OrderSwap() の式で手数料とスワップがあるのが気に食わない
ヘルプによると、手数料はポイントでも預金通貨 でもよいとのことですが、この計算式はこれを考慮しておらず、テストでは益となるよりも害となる可能性がありますが、これは好みの問題でしょう。
Take_Profit =100ポイント、lot =0.1、TPでポジションをクローズした場合、その通貨のオープンポジションの利益はいくらになりますか?
そういうわけにはいきません。
数学は得意じゃない?;)
でなければなりません。
profit=NormalizeDouble((Take_Profit*Point)*MarketInfo(_Symbol,MODE_TICKVALUE)*lot/Point,2)。
短縮されると
profit=NormalizeDouble(lot *TakeProfit*MarketInfo(_Symbol,MODE_TICKVALUE),2);
ここでの意味は、OrderProfit() を計算に使用することです。
TakeProfitが作動したときに20米ドルの利益を得るために、注文を出す前にポジションの ロットを計算するにはどうすればよいですか?OrderProfit() はここでは役に立ちません - まだポジションがないのです。
あるいは、0.1ロットで開始したときに20米ドルの利益を得るために、将来のポジションのTakeProfitはどのようになりますか?そして、ここでもOrderProfit()は役に立ちません - 同じ理由からです。
また、別の方法として、0.1ロットで建てたときに利用可能な資金の3%以下の損失となるように、将来のポジションにどのようなストップロスを設定すべきでしょうか?そして、ここでもOrderProfit()は役に立ちません - 同じ理由からです。
更新:すべての計算は、手数料とスワップがわからないと概算になります。1セントや1ポイントの精度が必要な場合は、ストップオーダーを「その場で」調整しなければなりません。
ポジションを建てる ために注文を出す前に、将来のポジションのロットをどのように計算すれば、takeprofitが発動したときに20米ドルの利益を得ることができますか?OrderProfit() はここでは役に立ちません - まだポジションがありません。
言い換えれば、0.1ロットでオープンした場合、20米ドルの利益を得るために、将来のポジションのtakeprofitはどうなりますか?そして、ここでもOrderProfit()は役に立ちません - 同じ理由からです。
開く前に計算しなければならないことを書いて理解し、すぐにメッセージを削除したところです。なんて賢い返事なんだ)
そんなことを書いて、入力パラメータに手数料として1ロットあたりの金額を入力したことがあります。
は、刻々と増えて いくのでしょうか?ヘルプ:-)))
それは、あなたが提出したコードで、SredRazmaxとSredRazmin 変数を初期化していない、すべてのtickをカウントしていることを意味します。
使う前に変数を初期化するのは良い習慣です。大学でもそう教えますし、バグを見つけるのにかかる時間を短縮できます;)
同僚、なぜこのコードはstrategy testerでは実行を拒否されるが、リアルタイムでは正しく実行されるのですか?具体的には、OnChartEvent()関数について話して います。テスターでの可視化モードでは、ボタンをクリックしても実行されません。
同僚、なぜこのコードはstrategy testerでは実行を拒否されるが、リアルタイムでは正しく実行されるのですか?具体的には、OnChartEvent()関数について話して います。テスターでの可視化モードでは、ボタンをクリックしても実行されません。
MT4ではOnChartEvent()がテスターで動作しないため。テスターでボタンの状態フラグを確認する。
ありがとうございました。その疑いはあったのですが、ヘルプにOnChartEvent() がテスターで動かないという情報は見つかりませんでした。