初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 828 1...821822823824825826827828829830831832833834835...1504 新しいコメント lil_lil 2018.02.16 17:32 #8271 ごあいさつ問題は、もっと論理的なことです。いわゆるアンチマーチンゲール系で、増加数に制限がある。利益で決済した場合、次のロットは倍率が上がります。損失が発生した場合、または連続して利益を得たポジションの数が指定された数を超えた場合、ロットは開始ロットと同じになります。指定された収益ポジション数を超えたら、再び増加のサイクルを始めるにはどうしたらよいですか?int K_U_=5; double LotExponent=2.00; //+------------------------------------------------------------------+ double llot() { double lt1=LotLastCloPos(Symbol(),m_magic);//лот последней закрытой позиции if(CountProfit(Symbol(),m_magic)>=1 && CountProfit(Symbol(),m_magic)<K_U_) LotSize=lt1*LotExponent;// else LotSize=Lots; return(LotSize); } / Vladimir Karputov 2018.02.16 17:51 #8272 lil_lil:ごあいさつ問題は、もっと論理的なことです。いわゆるアンチマーチンゲール系で、増加数に制限がある。利益で決済した場合、次のロットは倍率が上がります。損失が発生した場合、または連続して利益を得たポジションの数が指定された数を超えた場合、ロットは開始ロットと同じになります。指定された収益ポジション数を超えたら、再び増加のサイクルを始めるにはどうしたらよいですか? / ストップロス・テイクプロフィットコードの 例:ロットサイズは、グローバルプログラムレベル(ヘッダー内)で宣言される「ExtLot」変数に格納(上書き、増加、最小値にリセット)されます。OnTradeTransaction()は、「Market Exit」タイプの取引を捕らえ、取引がどのように終了したかをチェックします - Take ProfitまたはStop Lossで。 if(deal_entry==DEAL_ENTRY_OUT) { if(deal_reason==DEAL_REASON_SL) ExtLot*=2.0; else if(deal_reason==DEAL_REASON_TP) ExtLot=m_symbol.LotsMin(); } ストップロスの場合はロットを2倍に し、テイクプロフィットの 場合はロットを最小値に戻します。 注意:Expert Advisor 自体のストップロスとテイクプロフィットの計算が少し間違っていますが、コードはすぐに再公開される予定です。 lil_lil 2018.02.16 18:09 #8273 Vladimir Karputov:ストップロス・テイクプロフィットコードの 例:ロットサイズは、グローバルプログラムレベル(ヘッダー内)で宣言された「ExtLot」変数に格納(上書き、増加、最小値にリセット)されます。OnTradeTransaction()は、「Market Exit」タイプの取引を捕らえ、取引がどのように終了したかをチェックします - Take ProfitまたはStop Lossで。 ストップロスの場合はロットを2倍に し、テイクプロフィットの 場合はロットを最小値に戻します。 注:Expert Advisorでストップロスとテイクプロフィットの少し間違った計算である - しかし、すぐにコードを再公開した。利益が出ている取引が何回続いているかを計算し、5回を超えたら初期ロットに戻し、ポジション6は初期ロットで開き、ポジション7はボリューム=ロット6に係数をかけたもので開くように する、といった具合です。さらに儲かるポジションが5つできたら、最初のロットに戻る。 儲かるポジションは20連発そのロットは、1、2、4、8、16、1、2、4、8、16、1、2、4、8、16のはずです。 Vladimir Karputov 2018.02.16 19:09 #8274 lil_lil:連続して利益が出た取引の回数を計算し、5回を超えたら初期ロットに戻し、ポジション6は初期ロットで開き、ポジション7は出来高=ロット6に係数をかけたもので開くように する、などです。さらに儲かるポジションが5つできたら、最初のロットに戻る。 儲かるポジションは20連発そのロットは、1、2、4、8、16、1、2、4、8、16、1、2、4、8、16のはずです。ロットカウント機能でスタティック変 数を使用する必要があります。その仕組みはこうだ。 //+------------------------------------------------------------------+ //| Test_1.mq5 | //| Copyright 2016, MetaQuotes Software Corp. | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2016, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart(void) { static int counter=0; for(int i=0;i<18;i++) { Print(counter); counter++; if(counter==5) counter=0; } } //+------------------------------------------------------------------+ 結果 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 ファイル: Test_1.mq5 2 kb lil_lil 2018.02.16 23:00 #8275 Vladimir Karputov:ロットカウント機能でスタティック変 数を使用する必要があります。その仕組みはこうだ。 結果 例に従ってリセットしたのですが、ロットの増加の順番がつかめません 儲かるポジションは20個、並んでいる。彼らのロットは、1、2、4、8、16、1、2、4、8、16、1、2、4、8、16、1、1、1、1、1、..........のはずですが、1、2、4、8、16、1、1、1、1、......のはずです。 どうしたんですか? int K_U_=5; double Lots=1.0; double LotExponent=2.00; //+------------------------------------------------------------------+ double llot() { double lt1=LotLastCloPos(Symbol(),m_magic); if(CountProfit(Symbol(),m_magic)>=1 && CountProfit(Symbol(),m_magic)<K_U_) LotSize=lt1*LotExponent;// else LotSize=Lots; return(LotSize); } //+------------------------------------------------------------------ int CountProfit(const string Symb,const long MagicNumber=0) { int counter=0; ulong Ticket; if(HistorySelect(0,LONG_MAX)) for(int i=HistoryDealsTotal()-1; i>=0; i--){ if((bool)(Ticket=HistoryDealGetTicket(i)) && (HistoryDealGetInteger(Ticket, DEAL_ENTRY) == DEAL_ENTRY_OUT) && (HistoryDealGetInteger(Ticket, DEAL_MAGIC) == MagicNumber) && (HistoryDealGetString(Ticket, DEAL_SYMBOL) == Symb)) { if(HistoryDealGetDouble(Ticket,DEAL_PROFIT)>0) counter++; else break; } } if(counter==K_U_) counter=0; return(counter); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double LotLastCloPos(const string Symb,const long MagicNumber=0) { ulong Ticket; double lot_=0; if(HistorySelect(0,LONG_MAX)) for(int i=0; i<HistoryDealsTotal(); i++) if((bool)(Ticket=HistoryDealGetTicket(i)) && (HistoryDealGetInteger(Ticket, DEAL_ENTRY) == DEAL_ENTRY_OUT) && (HistoryDealGetInteger(Ticket, DEAL_MAGIC) == MagicNumber) && (HistoryDealGetString(Ticket, DEAL_SYMBOL) == Symb)) { lot_=HistoryOrderGetDouble(Ticket,ORDER_VOLUME_INITIAL); } return(lot_); } Vladimir Karputov 2018.02.17 04:41 #8276 lil_lil:例にしたがってゼロにするのですが、ロットの増加の順番がつかめません 儲かるポジションは20個、並んでいる。彼らのロットは、1、2、4、8、16、1、2、4、8、16、1、2、4、8、16のはず ですが、1、2、4、8、16、1、1、 1、1.............となっているのです。 どうしたんですか? では、やはりOnTradeTransactionを 普通に使うのは嫌なのでしょうか?では、全取引履歴(1970年以降)をEXACTLYに要求するのがいいのですか?なぜ? lil_lil 2018.02.17 05:57 #8277 Vladimir Karputov:では、OnTradeTransactionで 正しく動作させたくないということでしょうか?では、1970年以降のすべての取引履歴を要求するのがよいのでしょうか?なぜ?理由を見つけた、ブラケット。 私がしたくないというのはどういう意味ですか?OnTradeTransactionは 私の質問とどんな関係があるのですか?) lil_lil 2018.02.17 06:20 #8278 さて、私の質問の2つ前の投稿に、計算例がありますね。 ありがとうございます。 Vladimir Karputov 2018.02.17 08:21 #8279 lil_lil:理由を見つけた、ブラケット。 したくないとはどういう意味ですか?OnTradeTransactionは 私の質問とどんな関係があるのでしょうか;)取引履歴を聞くだけ HistorySelect(0,LONG_MAX) は、1970年以降のその取引口座の履歴をすべて、すべて、すべて要求することを意味します。これは非常にサブオプティカルなことです。 その口座で何千もの取引がある場合はどうでしょうか?もし、(神頼みで)この要求を全ての刻み目にしたらどうでしょう? Aleksey Vyazmikin 2018.02.17 13:12 #8280 取引履歴と連動する機能を教えてください。 最後の取引の開始日、終了日、出来高、財務結果、その種類(買いか売りか)の情報を得る必要があるのですが。 同様の機能をお持ちの方は、ぜひご紹介ください。 1...821822823824825826827828829830831832833834835...1504 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
/
/
ストップロス・テイクプロフィットコードの 例:ロットサイズは、グローバルプログラムレベル(ヘッダー内)で宣言される「ExtLot」変数に格納(上書き、増加、最小値にリセット)されます。OnTradeTransaction()は、「Market Exit」タイプの取引を捕らえ、取引がどのように終了したかをチェックします - Take ProfitまたはStop Lossで。
ストップロスの場合はロットを2倍に し、テイクプロフィットの 場合はロットを最小値に戻します。
注意:Expert Advisor 自体のストップロスとテイクプロフィットの計算が少し間違っていますが、コードはすぐに再公開される予定です。
ストップロス・テイクプロフィットコードの 例:ロットサイズは、グローバルプログラムレベル(ヘッダー内)で宣言された「ExtLot」変数に格納(上書き、増加、最小値にリセット)されます。OnTradeTransaction()は、「Market Exit」タイプの取引を捕らえ、取引がどのように終了したかをチェックします - Take ProfitまたはStop Lossで。
ストップロスの場合はロットを2倍に し、テイクプロフィットの 場合はロットを最小値に戻します。
注:Expert Advisorでストップロスとテイクプロフィットの少し間違った計算である - しかし、すぐにコードを再公開した。
利益が出ている取引が何回続いているかを計算し、5回を超えたら初期ロットに戻し、ポジション6は初期ロットで開き、ポジション7はボリューム=ロット6に係数をかけたもので開くように する、といった具合です。さらに儲かるポジションが5つできたら、最初のロットに戻る。
儲かるポジションは20連発そのロットは、1、2、4、8、16、1、2、4、8、16、1、2、4、8、16のはずです。
連続して利益が出た取引の回数を計算し、5回を超えたら初期ロットに戻し、ポジション6は初期ロットで開き、ポジション7は出来高=ロット6に係数をかけたもので開くように する、などです。さらに儲かるポジションが5つできたら、最初のロットに戻る。
儲かるポジションは20連発そのロットは、1、2、4、8、16、1、2、4、8、16、1、2、4、8、16のはずです。
ロットカウント機能でスタティック変 数を使用する必要があります。その仕組みはこうだ。
結果
0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2
ロットカウント機能でスタティック変 数を使用する必要があります。その仕組みはこうだ。
結果
例に従ってリセットしたのですが、ロットの増加の順番がつかめません
儲かるポジションは20個、並んでいる。彼らのロットは、1、2、4、8、16、1、2、4、8、16、1、2、4、8、16、1、1、1、1、1、..........のはずですが、1、2、4、8、16、1、1、1、1、......のはずです。
どうしたんですか?
例にしたがってゼロにするのですが、ロットの増加の順番がつかめません
儲かるポジションは20個、並んでいる。彼らのロットは、1、2、4、8、16、1、2、4、8、16、1、2、4、8、16のはず ですが、1、2、4、8、16、1、1、 1、1.............となっているのです。
どうしたんですか?
では、やはりOnTradeTransactionを 普通に使うのは嫌なのでしょうか?では、全取引履歴(1970年以降)をEXACTLYに要求するのがいいのですか?なぜ?
では、OnTradeTransactionで 正しく動作させたくないということでしょうか?では、1970年以降のすべての取引履歴を要求するのがよいのでしょうか?なぜ?
理由を見つけた、ブラケット。
私がしたくないというのはどういう意味ですか?OnTradeTransactionは 私の質問とどんな関係があるのですか?)
さて、私の質問の2つ前の投稿に、計算例がありますね。
ありがとうございます。
理由を見つけた、ブラケット。
したくないとはどういう意味ですか?OnTradeTransactionは 私の質問とどんな関係があるのでしょうか;)
取引履歴を聞くだけ
は、1970年以降のその取引口座の履歴をすべて、すべて、すべて要求することを意味します。これは非常にサブオプティカルなことです。
取引履歴と連動する機能を教えてください。
最後の取引の開始日、終了日、出来高、財務結果、その種類(買いか売りか)の情報を得る必要があるのですが。
同様の機能をお持ちの方は、ぜひご紹介ください。