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

 

1ロットあたりのマージンの計算は非常にシンプルです。

  double МАРЖА=MarketInfo(Symbol(),MODE_MARGINREQUIRED);
  double МАРЖАИНИ=MarketInfo(Symbol(),MODE_MARGININIT);
  double МАРЖАПОДД=MarketInfo(Symbol(),MODE_MARGINMAINTENANCE);
  double МАРЖАЛОК=(MarketInfo(Symbol(),MODE_MARGINHEDGED)*2)/MarketInfo(Symbol(),MODE_LOTSIZE);

戻り値は、入金時の通貨で表示されます。

0を返すこともあり、これが普通であることに注意してください。

一部のDealing Deskでは、初期化およびサポートマージンを使用していない場合があります。

また、重ね合わせたときの「ゼロマージン」を利用して...

*

インフォタイプのオーバーラップ計算、原則 オプション。

  string МАРЖАЛОКИД="na";
  if( МАРЖАЛОК==0)    МАРЖАЛОКИД="0";
  if( МАРЖАЛОК==1)    МАРЖАЛОКИД="1";
  if( МАРЖАЛОК==0.5)  МАРЖАЛОКИД="1D";
  if( МАРЖАЛОК==2)    МАРЖАЛОКИД="2";  
 
kombat >> :

1ロットあたりのマージンの計算は非常にシンプルで、...です。

それは、彼が望んでいたことではありません。彼は、未決済注文のマージンを商品ごとに別々に計算する必要があります。つまり、楽器ごとのロットを合計して、その楽器のマージンを掛けるのです。

 
granit77 >> :

これは、彼が望んでいたことではありません。彼は、未決済注文のマージンを商品ごとに別々に計算する必要があります。これは、商品ごとのロットを合計し、商品のマージンを掛けることを意味します。

まあ、単純な話、各楽器はそれぞれsumolot*margin

マージンもグロスもわかっている。

double SumLot(){ double buy=0, sell=0, sl; int y;
for( y=0; y<OrdersTotal(); y++) {OrderSelect( y, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderType()==0) buy+=OrderLots();
if(OrderSymbol()==Symbol() && OrderType()==1) sell+=OrderLots();
} return( buy- sell);}
 
kombat писал(а)>>

1ロットあたりのマージンの計算は非常にシンプルです。

戻り値は、入金時の通貨で表示されます。

0を返すこともあり、これが普通であることに注意してください。

一部のDealing Deskでは、初期化およびサポートマージンを使用していない場合があります。

また、「ゼロマージン」のオーバーラップが使用されていますが...。

*

インフォタイプのオーバーラップ算出は、原則として オプションです。

ありがとうございます。

イニシャライズ・サポート・マージンとノーマル・マージンの違い、つまり何に使うのか?

 
Finbest >> :

ありがとうございます。

初期設定やサポートマージン、通常のマージンとの違い、つまり何に使うのか?

これがフューチャーズ・ツールキットです。

m.init = オープンに必要な証拠金

m.subd = 開いた後に表示される

計算がかなり複雑で特殊なので、ディーリングコンディションで誘導しています。

m.subdは通常m.iniの75%程度です。

 

また、楽器ごとにマージンを分けて見るという方法もあります。

(少し手を加えたiExposure )

ファイル:
 

こんにちは。助けてください。

このプログラムを書いてみたのですが、うまくいきません...。


double ves[][6], hour[][6];
ArrayCopyRates(ves, Symbol(),Period());// 配列にはチャートの全データが格納されています。

int day= Day();
int hou= Hour();
da= day;
for (; q<= da; q++, w--){
if (TimeDay(ves[q][0])== w && TimeHour(ves[q][0])== hou){
ArrayCopy(hour, ves, e, q);
e++;
}
}

二つの配列がありました.ves配列は時間配列です.

何が必要なのか............。

現在の時刻を取得する。

昨日と同じ時間(昨日の日)をvesからhourにコピーする。

などなど...。

 

みんな、助けて!やり方がわからないんだ。

ステップStepでLOWとHI間のレベルを計算するループがあります。

for ( double c = LOW; c < HI; c = c + Step )

あとは、各レベルをどこかに保存しておいて、後で簡単に取り出して現在の価格と比較できるようにしておくことです。怠惰からではなく、例を見るまで、私はまだそれを行う方法を理解していないので、非常に多くのコードの形でお願いします。ありがとうございました。

 

こんにちは、目利きの達人たち。教科書やフォーラムで答えが見つからない質問を何度もしています。どうしてこのような事態になるのでしょうか。

テストでは、利益が0と表示されているのに、なぜ3回目の取引で突然ロットサイズが大きくなったのでしょうか?

Lots=MathMin(20,NormalizeDouble(MathMax(Lots,AccountEquity( ) /3000),1)) のように計算されます。

テスト


シンボルマーク EURCHF (ユーロ vs スイスフラン)
期間 1分(M1) 2009.08.30 23:02 ~ 2009.08.31 09:34 (2009.08.30~2009.09.05)。
モデル すべてのティック(利用可能な最小のすべての時間枠に基づく最も正確な方法)
パラメータ min=0.1 とする。

歴史に残るバー 1519 モデル化されたダニ 2156 モデリング品質 24.95%
チャートの不一致エラー 0




初回入金額 450.00



当期純利益 -8.00 利益合計 0.00 全損 -8.00
収益性 0.00 期待されるペイオフ -2.00

アブソリュートドローダウン 32.00 最大ドローダウン 38.00 (8.33%) 相対的ドローダウン 8.33% (38.00)

総取引高 4 ショートポジション(勝率) 1 (0.00%) ロングポジション(勝率) 3 (100.00%)

利益を得た取引(全体の割合) 3 (75.00%) 損失取引(全体に占める割合) 1 (25.00%)
最大 儲け話 0.00 負の取引 -8.00
平均値 得な話 0.00 ディールロス -8.00
最大数 れんしょう 3 (0.00) 継続的損失(ロス) 1 (-8.00)
最大 継続的な利益(勝利数) 0.00 (0) 連続損失(損失数) -8.00 (1)
平均値 連勝 3 継続的な損失 1

時間 タイプ ご注文 ボリューム 価格 S / L T / P 利益 バランス
1 2009.08.31 00:16 買う 1 0.30 1.5161 1.5127 1.5163
2 2009.08.31 00:37 了い 1 0.30 1.5161 1.5127 1.5163 0.00 450.00
3 2009.08.31 00:44 買う 2 0.30 1.5158 1.5124 1.5161
4 2009.08.31 02:58 了い 2 0.30 1.5158 1.5124 1.5161 0.00 450.00
5 2009.08.31 03:14 買う 3 0.40 1.5152 1.5118 1.5154
6 2009.08.31 03:30 了い 3 0.40 1.5152 1.5118 1.5154 0.00 450.00
7 2009.08.31 06:45 捌く 4 0.40 1.5151 1.5185 1.5149
8 2009.08.31 08:18 了い 4 0.40 1.5153 1.5185 1.5149 -8.00 442.00








































































 
001 >> :

みんな、助けて!やり方がわからないんだ。

ステップStepでLOWとHI間のレベルを計算するループがあります。

for ( double c = LOW; c < HI; c = c + Step )

あとは、各レベルをどこかに保存しておいて、後で簡単に取り出して現在の価格と比較できるようにする必要がありますね。怠惰からではなく、例を見るまで、私はまだそれを行う方法を理解していないので、非常に多くのコードの形でお願いします。ありがとうございました。

オプションとして

double c, levels[];
int nCount = 1+( HI - LOW)/ Step;
ArrayResize( levels, nCount);

for ( c = LOW, nCount = 0; c < HI; c += Step, nCount++) {
    levels[ nCount] = c;
}

// Use:
for (int j = 0; j < nCount; j++) {
    if ( levels[ j] > ...) {
        //...
    }
}