[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 188

 

スワップ計算をしようとすると、うまくいかない

以下は、過去20回のトレードのスワップ値を出力するコードです。

for ( int j=OrdersHistoryTotal( )-1; j>=OrdersHistoryTotal( )-21; j--) {
OrderSelect(j, SELECT_BY_POS, MODE_HISTORY);
if(OrderType()==OP_BUY)
Alert(OrderSymbol()+" ЛОТ = "+OrderLots()+" РЕАЛЬНЫЙ СВОП = "+OrderSwap()+" РАСЧЕТНЫЙ СВОП "+MarketInfo(OrderSymbol(),MODE_SWAPLONG)*MarketInfo(OrderSymbol(),MODE_BID)*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE));
if(OrderType()==OP_SELL)
Alert(OrderSymbol()+" ЛОТ = "+OrderLots()+" РЕАЛЬНЫЙ СВОП = "+OrderSwap()+" РАСЧЕТНЫЙ СВОП "+MarketInfo(OrderSymbol(),MODE_SWAPSHORT)*MarketInfo(OrderSymbol(),MODE_BID)*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE));
}

しかし、推定されたスワップと実際のスワップは異なる。落札価格が二度と同じにならないのは、万に一つもないのです。

なぜか差は10の倍数になっています。

つまり、計算上のスワップは、実際のスワップの10倍となる。

何が問題なのか、私には想像もつきません。

MarketInfo(OrderSymbol(),MODE_SWAPTYPE) 1を返したら

"スワップの計算方法 1 - 商品の基準通貨で計算;"

スワップ値をpipsで取ると、次のようになります。

MarketInfo(OrderSymbol(),MODE_SWAPLONG)

この値にBidを掛けて います。

*MarketInfo(OrderSymbol(),MODE_BID)

その後、 から のロットの大きさ

*OrderLots()

と、1ロットから預金通貨で 1ポイント()の価値を乗じる。

*MarketInfo(OrderSymbol(),MODE_TICKVALUE)

返される値は、以下の通りです。

eurgbp lot = 0.46000000 real swap = -1.31000000 estimated swap -13.05244609

 

どうしたらいいか教えてください))

ダブルMA1,MA2。

MA1=iMA(...,0)とする。

MA2=iMA(...,3)とする。

if (MA1-MA2>Point)//MA ルックアップ

if (MA1-MA2,-Point)//MAは下を向く

 
vasya_vasya писал(а)>>

この値にBidを掛けて います。

*MarketInfo(OrderSymbol(),MODE_BID)

何のために?

 
Roger >> :

どうしたらいいか教えてください))

ダブルMA1,MA2。

MA1=iMA(...,0)とする。

MA2=iMA(...,3)とする。

if (MA1-MA2>Point)//MA ルックアップ

if (MA1-MA2,-Point)//MA は下を向いています。

ありがとうございました))

 
Roger писал(а)>>

これは何のため?

何を返すのかの説明が見つからず

MarketInfo(OrderSymbol(),MODE_SWAPLONG)です。

EURGBP quotation EUR point sizeと判断し、BIDを掛けて GBPで いくらになるかを計算しました。

という点です。

MarketInfo(OrderSymbol(),MODE_TICKVALUE)です。

EURGBP クォートのGBP に対してのみ、1ロットあたりのポイント値を返します。EURに対しては 返しません。

 
vasya_vasya писал(а)>>

値が何を返すかについての記述はどこにもない

なぜか、すべての計算が預金の通貨で行われているような気がしたのです。
 
Roger писал(а)>>
なぜか私は、すべての計算が預金の通貨で行われると思い続けていました。

関数 MarketInfo(OrderSymbol(),MODE_SWAPSHORT) を実行する。

整数値で-2 を返します。したがって、これがポイントの価値であると私は考えています。

これが、預けた通貨のpipsで表されるスワップの値だとします。

預入通貨 = USD

マルチプル

MarketInfo(OrderSymbol(),MODE_SWAPSHORT)

ロット数別

*OrderLots()

また、1ロットあたり当社保証金通貨1ピップの価値を乗じます。

*10

ゲット

スワップ=-9.20000000

の代わりに

リアルスワップ=-1.31000000

 
vasya_vasya писал(а)>>

関数 MarketInfo(OrderSymbol(),MODE_SWAPSHORT) を実行する。

整数値で-2 を返します。したがって、これがpipsの値であると推測される。

EURGBPの場合、ショートで0(これはAlpari)、ロングで-0.68を返し、これはまさにドル建てです。

 
プロファイルは、N期間の最大高を計算する方法関数iHighestは ありませんmql5言語のヘルプによると、アドバイスしてください? ...私はcopyHighとfmaxを試してみましたが、特定の期間のみ、もちろんその、ヘルプではない
 

ざっくり言うと

double HighestBar(int start, int end)
{
double maxBar;
for (int i= start; i< end; i++)
if( maxBar<High[ i]) maxBar=High[ i];
return( maxBar);
}