初心者の方からの質問 MQL4 MT4 MetaTrader 4 - ページ 71 1...646566676869707172737475767778...260 新しいコメント Renat Akhtyamov 2017.03.19 17:23 #701 Vitalie Postolache: いつからピリオドはDouble型 になったんだ?さすがにstring+intは間違いだろうしかし、上に書いたような方法でやれば、エラーは出ません。 Vitalie Postolache 2017.03.19 17:33 #702 Renat Akhtyamov:それは、「string+intはエラーになる」ということです。しかし、上に書いたような方法でやれば、エラーは出ません。IntegerToString?いや、聞いてない;) Renat Akhtyamov 2017.03.19 17:39 #703 Vitalie Postolache: IntegerToString?いや、聞いてない;) どちらの方法でも問題なく動作します。 funnyrain8 2017.03.20 08:27 #704 ハロープログラミングは初めてですが、勉強しようと思っています)インジケーターの読み通りに注文を終了させるのに少し問題があります。インジケーターの読みに従ってポジションを建て、インジケーターの読みに従ってポジションを閉じるが、ストップも利益もない反対方向である。if(r > 50 && p > m)//買い注文を 開始するための条件{ticketB = OrderSend(Symbol(),OP_BUY,0.1,Ask,5,0,0,",111,0,Green); //買いの注文を出す。}注文の終了条件は正しく書けていますか?if(r < 50 && p < m) --- これは売りの条件であり、クローズの条件である。{OrderClose(ticketB,0.1,Bid,5,Red)。}初期化されていない変数 'ticketB' の使用と 'OrderClose' の戻り値の可能性をチェック する必要があることを表示する。皆さん、どこをどう書き間違えたか教えてください。 MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 Questions from Beginners MQL4 Any questions from newcomers Renat Akhtyamov 2017.03.20 08:55 #705 funnyrain8:ハロープログラミングは初めてですが、勉強しようと思っています)インジケーターの読み通りに注文を終了させるのに少し問題があります。インジケーターの読みに従ってポジションを建て、インジケーターの読みに従ってポジションを閉じるが、ストップも利益もない反対方向であること。if(r > 50 && p > m)//買い注文を 開始するための条件{ticketB = OrderSend(Symbol(),OP_BUY,0.1,Ask,5,0,0,",111,0,Green); //買いの注文を出す。}注文の終了条件は正しく書けていますか?if(r < 50 && p < m) --- これは売りの条件であり、クローズの条件である。{OrderClose(ticketB,0.1,Bid,5,Red)。}初期化されていない変数 'ticketB' の使用と 'OrderClose' の戻り値の可能性をチェック する必要があることを表示する。皆さん、どこをどう書き間違えたか教えてください。変数ticketBは初期化されていない、つまりその型がわからない。この場合、Int2つ目のエラーは、オーダーをクローズした結果にエラーがないかを確認することです。フォーラムで「エラー処理機能」を検索 funnyrain8 2017.03.20 14:29 #706 Renat Akhtyamov:変数ticketBが初期化されていない、つまり型がわからない場合。この場合、Intです。2つ目のエラーは、オーダークローズの結果にエラーがないかを確認することです。フォーラムで「エラー処理機能」を検索ロジックがよくわからないというか、呆れてしまうのですが)、どうすればいいのでしょうか? 最初、OrderSelectを使ってやってみたのですが、間違っていました)情報が欲しい Renat Akhtyamov 2017.03.20 16:09 #707 funnyrain8:はGetLastError なのでしょうか? ロジックが理解できないのか、ちょっと頭が悪いのか)でも、どうやって設定するのでしょうか? 最初はOrderSelectで全部やろうとしましたが、違うんですね)。情報が欲しいはい。コードベースに目を通す - 豊富な実装例がある Irina Tarakanova 2017.03.20 18:54 #708 こんにちは、私は信号の販売者 です、私は人々がそれらを購読するようにあなたの信号を促進することができますどのように知っていただきたいと思います? Arseniy Barudkin 2017.03.20 23:35 #709 Vitalie Postolache: 論理はどこにあるのか?最初の注文で最大許容ロットを設定し、それ以降の注文でそれを増やしていくのです。これって、大げさに言えば、あまり常識的ではないと思いませんか?さらに、ループ内の最初の注文のロットを、全く理解できない方法で減少させますが、その前に「計算」された他の注文のロットは変化せず、これらの値はこの関数の限界を超えることはありません。じゃあ、どうするんだ?インクリメントループは実数ではだめで、カウンタ、整数でなければならないことは言うまでもない。しかし、ロット値をカウンタとして設定し、反復するたびにそこから1ずつ減算していくのです。これは大きな間違いであり、非常に重大なことです。まず頭の中でロジックを明確にしてから、コードに実装してみてください。 乗算後の最終ロットを決定するために取り出されない値は、オープン可能な最大ロットであるべきです。実際には、EAが小さな間隔で注文をオープンするので、これらのロットの注文はオープンしないかもしれませんが、確率はそこにあるので、私は最大限の初期ロットを計算したい理由なのです。皆さんのアドバイスを聞いて、このような形になりました。この機能についてどう思われますか?何かを見落としたか、間違って処方したのか、テスターが少しハングアップし、小さな出力ロットを取得します。//Функция расчета торгового лота double GetLots() { double lots = 0.0; double L9 = MarketInfo(Symbol(),MODE_MAXLOT); double L8 = L9 / Multipler; double L7 = L8 / Multipler; double L6 = L7 / Multipler; double L5 = L6 / Multipler; double L4 = L5 / Multipler; double L3 = L4 / Multipler; double L2 = L3 / Multipler; double cl = L2 / Multipler; double balance = AccountFreeMarginCheck(Symbol(),OP_BUY,L9); if(balance <= AccountFreeMargin()) { for(int risk = 100;balance > 0 && risk > 0;risk--) { if(!IsStopped()) { if(risk >= 1) { lots = (cl/100)*risk; } if(risk < 1) { for(int risk2 = 100;balance > 0 && risk2 >= 1;risk2--) { lots = (cl/100)*(risk2*0.01); } } } } } double clots = NormalizeDouble(MathMax(lots,MarketInfo(Symbol(),MODE_MINLOT)),2); return(clots); } Vitalie Postolache 2017.03.20 23:47 #710 Arseniy Barudkin: それについてどう思いますか? 私も同じことを言います。論理が苦手なんですね。利用可能な資金とリスクの値(確か3%くらいと書いてあった)から、初期ロットを即座に計算するのは何か問題があるのでしょうか?なぜ、すべてを一カ所で行う必要があるのでしょうか?自由証拠金の値を取り、リスクを掛け、100で割って1ロットの証拠金の値 - ここでは、自由証拠金の割合を指定してロットを計算する最も簡単な公式を紹介します。また、ロット変更のステップを考慮し、証券会社が許容する最小/最大ロットサイズを超えないようにする必要があります。input double risk = 3; //процент свободной маржи для расчёта лота double GetLots() { double margin = MarketInfo(Symbol(),MODE_MARGINREQUIRED); double lotstep = MarketInfo(Symbol(),MODE_LOTSTEP); double rsk = MathMin(100.0,risk); double lotmax = MarketInfo(Symbol(), MODE_MAXLOT); double lotmin = MarketInfo(Symbol(), MODE_MINLOT); double clots = NormalizeDouble(lotstep*MathRound(AccountFreeMargin()*rsk/100/margin/lotstep),2); if(clots < lotmin) clots = lotmin; if(clots > lotmax) clots = lotmax; return(clots); } 1...646566676869707172737475767778...260 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
いつからピリオドはDouble型 になったんだ?
さすがにstring+intは間違いだろう
しかし、上に書いたような方法でやれば、エラーは出ません。
それは、「string+intはエラーになる」ということです。
しかし、上に書いたような方法でやれば、エラーは出ません。
IntegerToString?いや、聞いてない;)
IntegerToString?いや、聞いてない;)
ハロー
プログラミングは初めてですが、勉強しようと思っています)
インジケーターの読み通りに注文を終了させるのに少し問題があります。
インジケーターの読みに従ってポジションを建て、インジケーターの読みに従ってポジションを閉じるが、ストップも利益もない反対方向である。
if(r > 50 && p > m)//買い注文を 開始するための条件
{
ticketB = OrderSend(Symbol(),OP_BUY,0.1,Ask,5,0,0,",111,0,Green); //買いの注文を出す。
}
注文の終了条件は正しく書けていますか?
if(r < 50 && p < m) --- これは売りの条件であり、クローズの条件である。
{
OrderClose(ticketB,0.1,Bid,5,Red)。
}
初期化されていない変数 'ticketB' の使用と 'OrderClose' の戻り値の可能性をチェック する必要があることを表示する。
皆さん、どこをどう書き間違えたか教えてください。
ハロー
プログラミングは初めてですが、勉強しようと思っています)
インジケーターの読み通りに注文を終了させるのに少し問題があります。
インジケーターの読みに従ってポジションを建て、インジケーターの読みに従ってポジションを閉じるが、ストップも利益もない反対方向であること。
if(r > 50 && p > m)//買い注文を 開始するための条件
{
ticketB = OrderSend(Symbol(),OP_BUY,0.1,Ask,5,0,0,",111,0,Green); //買いの注文を出す。
}
注文の終了条件は正しく書けていますか?
if(r < 50 && p < m) --- これは売りの条件であり、クローズの条件である。
{
OrderClose(ticketB,0.1,Bid,5,Red)。
}
初期化されていない変数 'ticketB' の使用と 'OrderClose' の戻り値の可能性をチェック する必要があることを表示する。
皆さん、どこをどう書き間違えたか教えてください。
変数ticketBは初期化されていない、つまりその型がわからない。この場合、Int
2つ目のエラーは、オーダーをクローズした結果にエラーがないかを確認することです。フォーラムで「エラー処理機能」を検索
変数ticketBが初期化されていない、つまり型がわからない場合。この場合、Intです。
2つ目のエラーは、オーダークローズの結果にエラーがないかを確認することです。フォーラムで「エラー処理機能」を検索
ロジックがよくわからないというか、呆れてしまうのですが)、どうすればいいのでしょうか? 最初、OrderSelectを使ってやってみたのですが、間違っていました)
情報が欲しい
はGetLastError なのでしょうか? ロジックが理解できないのか、ちょっと頭が悪いのか)でも、どうやって設定するのでしょうか? 最初はOrderSelectで全部やろうとしましたが、違うんですね)。
情報が欲しい
はい。
コードベースに目を通す - 豊富な実装例がある
論理はどこにあるのか?最初の注文で最大許容ロットを設定し、それ以降の注文でそれを増やしていくのです。これって、大げさに言えば、あまり常識的ではないと思いませんか?
さらに、ループ内の最初の注文のロットを、全く理解できない方法で減少させますが、その前に「計算」された他の注文のロットは変化せず、これらの値はこの関数の限界を超えることはありません。じゃあ、どうするんだ?
インクリメントループは実数ではだめで、カウンタ、整数でなければならないことは言うまでもない。しかし、ロット値をカウンタとして設定し、反復するたびにそこから1ずつ減算していくのです。これは大きな間違いであり、非常に重大なことです。
まず頭の中でロジックを明確にしてから、コードに実装してみてください。
それについてどう思いますか?
私も同じことを言います。論理が苦手なんですね。利用可能な資金とリスクの値(確か3%くらいと書いてあった)から、初期ロットを即座に計算するのは何か問題があるのでしょうか?なぜ、すべてを一カ所で行う必要があるのでしょうか?
自由証拠金の値を取り、リスクを掛け、100で割って1ロットの証拠金の値 - ここでは、自由証拠金の割合を指定してロットを計算する最も簡単な公式を紹介します。また、ロット変更のステップを考慮し、証券会社が許容する最小/最大ロットサイズを超えないようにする必要があります。