[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 599

 
alsu:
ログに何を取得し、どのようなメッセージを表示したかを書き留めます。



私はそれが入るはずの場所を示したが、それは入らなかった、どのようなフラクタルはパンチする必要があります。私はまた、アーカイブのコードとテストのtxt-ファイルの出力(私はそれを変更し、私のを追加しましたが、問題はまだ残っています)に添付してください。私はちょうど正直にモニターする変数がわからない(と場所の画像があります

)

ファイル:
ik.zip  4 kb
 

他のEAから関数GetLot(ファイル内)を取り込みました。 古いEAではそれ自体にエラーはないのですが、私のEAでは以下のようなものが発生します。


'(' -function definition unexpected C:\Program Files FilesBCS Trade Stationexpertsmq4 (112, 28)
'Risk' - variable not defined C:\Program Files FilesBCS Trade Station﹑ SovetnikStochastic.mq4 (112, 33)
'Free' - variable not defined C:\Program Files FilesBCS Trade Station﹑ SovetnikStochastic.mq4 (115, 17)

何が問題なのか?

ファイル:
 
皆さんはなぜそんなにアーキエイターが好きなのでしょうか?ソースコードに100500行もあるのか!
 

griha:

他のEAから関数GetLot(ファイル内)を取り込みました。 古いEAではそれ自体にエラーはないのですが、私のEAでは以下のようなものが発生します。


'(' - function definition unexpected C:\Program Files FilesBCS Trade Stationexpertsmq4 (112, 28)
'Risk' - variable not defined C:\Program Files FilesBCS Trade Station﹑ SovetnikStochastic.mq4 (112, 33)
'Free' - variable not defined C:\Program Files FilesBCS Trade Station﹑ SovetnikStochastic.mq4 (115, 17)

どうしたんですか?

最初のIfの 前にあるstart関数のコードに余分な中括弧があり、それがエラーになる理由です。よりよい方法は、括弧をオフセットして新しい行に 置き、別々のブロックが混ざらないようにすることです(例えば、前ページのコードのように)。

追伸

この式でロット計算ができると思います。

 double Lot     =MathFloor(Free*Risk/100/One_Lot/Step)*Step;    // откидываем лишние знаки после запятой, оставляем 2 знака
は0.1ロットで0.01以上のステップでは正しく動作しません。何か見落としがあったのかもしれませんが、その場合ロットは常に0になります(MathFloor(900*2/100/1324/0.02=0.67975831) = 0, so 0*Step=0)...。
 

ペアが任意の場合、選択した注文に対して OrderProfitPips()のようなものを計算する方法がわかりません。つまり、口座の通貨ではなく、pipsで利益を得る。

異なるペアで多通貨取引の有効性を分析するために、正確にpipsが必要なのです。4桁のpips(円建ての場合はそれぞれ2桁)が必要です。口座通貨が米ドルで、契約サイズが100 000単位であるとします。

ペアがEURUSDの場合、すべては簡単です。

pips = OrderProfit( ) / ( OrderLots( ) * 10. );


ペアがAUDCHFの場合、もう少し複雑です。もしこの口座がフラン口座であったとしても、計算式は全く同じになります。しかし、この口座はフラン口座であり、つまりOrderProfit()はドルで返されます。だから、私の利益はフランに換算する必要があるのです。

pips = USDCHF * OrderProfit( ) / ( OrderLots( ) * 10. );

そうだろ?

 
Mathemat:

ペアが任意の場合、選択した注文に対してOrderProfitPips()のようなものを計算する方法がわかりません。つまり、口座の通貨ではなく、pipsで利益を得る。

異なるペアで多通貨取引の有効性を分析するために、正確にpipsが必要なのです。4桁のpips(円建ての場合はそれぞれ2桁)が必要です。口座通貨が米ドルで、契約サイズが100 000単位であるとします。

通貨ペアがEURUSDの場合、全ては簡単です。

pips = OrderProfit( ) / ( OrderLots( ) * 10. );


ペアがAUDCHFの場合、もう少し複雑です。仮にフラン口座であったとしても、計算式は全く同じになります。しかし、この口座はドル口座であり、つまりOrderProfit()はドル建てで返されます。だから、私の利益はフランに換算する必要があるのです。

pips = USDCHF * OrderProfit( ) / ( OrderLots( ) * 10. );

そうだろ?


http://www.fxtrademaker.com/fx_calculation.htm は読まれましたか? それとも、http://thismatter.com/money/forex/leverage-margin-pips.htm?

私の理解では、EURUSDの場合、PipProfit=USDprofit/lot/Pointです。逆指値ペアの場合、始値と現在値の差を取り、Digitsを掛ける必要があります。Pips = OrderOpenPrice()-Bid*Digits_coefficient; where
Digits_coefficient = MathPow(10,Digits);


 

そうですね、どちらのリンクも使い道がありそうです。ありがとうございます。

追伸:pipsではなく、口座通貨でカウントすることにしました。円クロスのpipsが通常のものと不釣り合いすぎる。そして、それを(もちろん従来通り)足し算したかったのですが...。

 
Mathemat:

そうですね、どちらのリンクも使い道がありそうです。ありがとうございます。

追伸:pips単位ではなく、口座通貨単位でカウントすることにしました。円クロスのpipsの数値は、通常のものと比較にならないほど不釣り合いです。そして、それらを足し算したかったのです(もちろん条件付きですが)・・・。


PipsはPips、どうして不釣り合いなんだ?EURUSDで20pipの利益とJPYで20pipの利益はどう違うのですか?数え間違いでは...?でも、本当に口座の通貨で計算した方が楽なんです。

 
evillive: PipsはPips、どうして両立しないのだろう

さて、あなたのリンク先(2番目)では、すべてが見えていますね。

EUR/JPY=164.09の 時に10万 単位で買い、EUR/JPY=164.10USD/JPY=121.35 の時に売ります。

JPY pipsでの利益=164.10-164.09= 0.01 円 =1 pip (円の例外: 1 JPY pip = 0.01 円と覚えておいて ください。)

利益の合計(JPYpips)=1×100, 000=100,000 pips
利益合計(円)=100,000pips/1001,000円

USD/JPY=121.35 の気配値しかないので、USDで利益を得るには、気配値の通貨の換算率で割ることになります。

利益合計(米ドル)=1,000/121.35=8.24米ドル。

上記の値に相当するJPY/USD=0.00824という この相場しかない場合、円でのpipsを国内通貨に換算するには以下の計算式を使用します。

総利益(米ドル)=1,000×0.00824=8.24米ドル。

8.24米ドル(例えばEURUSD1ロットの0.824pipsに相当)の利益は、この例では 10万 円pipsに相当します

P.S.完全に素人のような気がしますが...。

 
Mathemat:

さて、あなたのリンク先(2つ目)には、そのすべてが示されています。

8.24米ドル(EURUSD1ロットの0.824pipsに相当)の利益は、 10万 円のpipsに相当します


読み方を間違えている。逆気配のペアの場合、 値と現在値の差を取り、Digitsから得た倍率をかけます( Pips = (Bid -OrderOpenPrice())*Digits_coefficient; ) 、これは、 (80.60-80.45=0.15) * MathPow(10,Digits) = 15 pipsとなり、ここで、次のようになります。

Digits_coefficient  = MathPow(10,Digits);

これ以上ないくらいにシンプルでしょう?

追伸:いや、もっとシンプルでもいいんですけどね ))))

 Pips = (Bid - OrderOpenPrice())/Point; //ордер лонг
 Pips = (OrderOpenPrice() - Ask)/Point; //ордер шорт

そしてこの表現は、すべての通貨ペアに当てはまります。