初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 271 1...264265266267268269270271272273274275276277278...1503 新しいコメント Vladimir Karputov 2014.07.03 14:46 #2701 soroko: ので、最初の値だけがインデックス[0]で埋められる。//+------------------------------------------------------------------+ //| test.mq5 | //| Copyright © 2014, Vladimir Karputov | //| http://wmua.ru/slesar/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2014, Vladimir Karputov" #property link "http://wmua.ru/slesar/" #property version "1.00" double Pr[5]; // обявление 5-мерного статического массива double PriceOld; // переменная для сравнения цены //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- double temp_prace=SymbolInfoDouble(_Symbol,SYMBOL_BID); if(NormalizeDouble(PriceOld-temp_prace,5)!=0) { Pr[4]=Pr[3]; Pr[3]=Pr[2]; Pr[2]=Pr[1]; Pr[1]=Pr[0]; Pr[0]=temp_prace; PriceOld=Pr[0]; } } //+------------------------------------------------------------------+ Vladimir Karputov 2014.07.04 08:11 #2702 soroko:ありがとう、眠れない週末を過ごさずにすみました)。vicmos ありがとうございます。 gordon 2014.07.04 08:15 #2703 barabashkakvn:vicmos ありがとうございます。 は、ArrayFill(...)/関数のように、すべてを1つの値で埋めます。 gordon 2014.07.04 08:27 #2704 soroko: は、ArrayFill(...)/関数のように、すべてを1つの値で埋めます。 桁数が少ないだけで、すみません!ありがとうございました。 jommerbot 2014.07.06 11:59 #2705 皆さんこんにちは!そんな問題、コンパイラは警告を出します。無視はしたくないので、出口を探すのを手伝ってくれませんか? double aHigh[ 12 ], aLow[ 12 ]; double dVolatility = 0.0; CopyHigh(sSymbol, PERIOD_MN1, 0, 12, aHigh); CopyLow(sSymbol, PERIOD_MN1, 0, 12, aLow); dVolatility = ArrayMaximum(aHigh) - ArrayMinimum(aLow); dVolatility = NormalizeDouble(dVolatility, SymbolInfoInteger(sSymbol, SYMBOL_DIGITS));特に最後の行に「型変換によるデータ消失の可能性 あり」と書いてあるのが気になる。この場合、実数型を正しく正規化するにはどうしたらよいでしょうか。 Vladimir Karputov 2014.07.06 12:10 #2706 jommerbot:皆さんこんにちは!そんな問題、コンパイラは警告を出します。無視はしたくないので、出口を探すのを手伝ってくれませんか?特に最後の行に「型変換によるデータ消失の可能性 あり」と書いてあるのが気になる。この場合、実数型を正しく正規化するにはどうしたらよいでしょうか。 dVolatility = NormalizeDouble(dVolatility, (int)SymbolInfoInteger(sSymbol, SYMBOL_DIGITS)); jommerbot 2014.07.06 12:12 #2707 barabashkakvn: ありがとうございました。 Andrey Miguzov 2014.07.06 12:13 #2708 jommerbot:皆さんこんにちは!そんな問題、コンパイラは警告を出します。無視はしたくないので、出口を探すのを手伝ってくれませんか?特に最後の行に「型変換によるデータ消失の可能性 あり」と書いてあるのが気になる。この場合、実数型を正しく正規化するにはどうしたらよいでしょうか。そしてもう一つ、ArrayMaximum と ArrayMinimum は、見つかった要素のインデックスを返します。だから、正しいやり方はこうだ。 dVolatility = aHigh[ArrayMaximum(aHigh)] - aLow[ArrayMinimum(aLow)]; jommerbot 2014.07.06 17:56 #2709 MigVRN:また、ArrayMaximum および ArrayMinimum は、見つかった要素のインデックスを返す。だから、正しいやり方はこうだ。 ありがとうございました。コードのデバッグ時に同じことを発見。 sergeis2005 2014.07.09 10:54 #2710 決済した注文の損失額から利食い額を正しく計算しない。1次=1、2次=2、3次=3、4次=4となることがわかった。過去のすべての注文の損失をカバーし、総損失の10%を獲得するためのpips数を計算する必要があります。実際には、Expert Advisorは、各閉じた注文の量は、本来保留中の注文に 等しいと見なします。つまり、その計算では、保留中の第5の注文が5ロットに等しい場合、以前のすべての負け注文は5ロットに等しく、したがって、損失は対応する間違った利益水準で計算されています。つまり、4つの注文の合計数量が10ロットであれば、Expert Advisorは単純に4つの注文に5番目の保留中の注文の数量を掛けて、合計数量20ロットとします......コードのどこを修正すればいいのでしょうか。// クローズしたトレードのロス・レベルからテイク・レベルを計算する関数です。//=================================================================================================double TakeProfitCalculate(double lot,int type){int n,i;ダブルprf,ttp;prf=MathAbs(BuyLevel-SellLevel)/Point*LOT*MarketInfo(Symbol(),MODE_TICKVALUE);//。if(No!=0) for(i=OrdersHistoryTotal()-1;i>=0;i--){if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;if(OrderSymbol()!=Symbol() || OrderMagicNumber()<MAGIC || OrderMagicNumber()>MAGIC+200 || OrderType()>OP_SELL) continue;n=OrderMagicNumber()-MAGIC;prf+=(OrderProfit()+OrderSwap()+OrderCommission())です。if(n==0) break;}prf=MathAbs(prf*(100+ProfitPercent)/100)となります。ttp=prf*Point/(LOT*MarketInfo(Symbol(),MODE_TICKVALUE))if(type==OP_BUY) return(NRu(BuyLevel+ttp)); else return(NRd(SellLevel-ttp))} Questions from Beginners MQL5 クローズドオーダーの利益計算 "HELP" コーディングのヘルプ 1...264265266267268269270271272273274275276277278...1503 新しいコメント 理由: キャンセル 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ので、最初の値だけがインデックス[0]で埋められる。
ありがとう、眠れない週末を過ごさずにすみました)。
vicmos ありがとうございます。
は、ArrayFill(...)/関数のように、すべてを1つの値で埋めます。
皆さんこんにちは!そんな問題、コンパイラは警告を出します。無視はしたくないので、出口を探すのを手伝ってくれませんか?
特に最後の行に「型変換によるデータ消失の可能性 あり」と書いてあるのが気になる。この場合、実数型を正しく正規化するにはどうしたらよいでしょうか。
皆さんこんにちは!そんな問題、コンパイラは警告を出します。無視はしたくないので、出口を探すのを手伝ってくれませんか?
特に最後の行に「型変換によるデータ消失の可能性 あり」と書いてあるのが気になる。この場合、実数型を正しく正規化するにはどうしたらよいでしょうか。
皆さんこんにちは!そんな問題、コンパイラは警告を出します。無視はしたくないので、出口を探すのを手伝ってくれませんか?
特に最後の行に「型変換によるデータ消失の可能性 あり」と書いてあるのが気になる。この場合、実数型を正しく正規化するにはどうしたらよいでしょうか。
そしてもう一つ、ArrayMaximum と ArrayMinimum は、見つかった要素のインデックスを返します。だから、正しいやり方はこうだ。
また、ArrayMaximum および ArrayMinimum は、見つかった要素のインデックスを返す。だから、正しいやり方はこうだ。
決済した注文の損失額から利食い額を正しく計算しない。1次=1、2次=2、3次=3、4次=4となることがわかった。過去のすべての注文の損失をカバーし、総損失の10%を獲得するためのpips数を計算する必要があります。
実際には、Expert Advisorは、各閉じた注文の量は、本来保留中の注文に 等しいと見なします。つまり、その計算では、保留中の第5の注文が5ロットに等しい場合、以前のすべての負け注文は5ロットに等しく、したがって、損失は対応する間違った利益水準で計算されています。つまり、4つの注文の合計数量が10ロットであれば、Expert Advisorは単純に4つの注文に5番目の保留中の注文の数量を掛けて、合計数量20ロットとします......コードのどこを修正すればいいのでしょうか。
// クローズしたトレードのロス・レベルからテイク・レベルを計算する関数です。
//=================================================================================================
double TakeProfitCalculate(double lot,int type)
{
int n,i;
ダブルprf,ttp;
prf=MathAbs(BuyLevel-SellLevel)/Point*LOT*MarketInfo(Symbol(),MODE_TICKVALUE);//。
if(No!=0) for(i=OrdersHistoryTotal()-1;i>=0;i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;
if(OrderSymbol()!=Symbol() || OrderMagicNumber()<MAGIC || OrderMagicNumber()>MAGIC+200 || OrderType()>OP_SELL) continue;
n=OrderMagicNumber()-MAGIC;
prf+=(OrderProfit()+OrderSwap()+OrderCommission())です。
if(n==0) break;
}
prf=MathAbs(prf*(100+ProfitPercent)/100)となります。
ttp=prf*Point/(LOT*MarketInfo(Symbol(),MODE_TICKVALUE))
if(type==OP_BUY) return(NRu(BuyLevel+ttp)); else return(NRd(SellLevel-ttp))
}