コーディングの方法は? - ページ 97

 
matrixebiz:
OK、家に帰ったらやってみるよ、でもそれならなぜすでにBuy注文でも動くんだ? ありがとう。

売り注文をしていても、価格が買いストップ変更コードの条件を満たしているので変更され、売りの部分の条件を満たさなくなったので、そこでは変更されないということもありえます。

Big Be

 

Big Be さん、ありがとうございます。しかし、私の古いコードは動作しますがSell 注文を 修正するために StopLoss の使用を有効にしなければならないことに気づきました。

不思議なことに、MoveStopOnceのTakeProfitを有効にしなくてもBUY注文で動作するのですが、SELL注文を修正するためにMoveStopOnceのStopLossを有効にしなければならないんですね。

そうか、理由がわからないと、もう少しコードを深く見てみないとわからないね。

EDIT:に変更すると。

if(0 < OrderOpenPrice() - Point * MoveStopTo) {

[/code]

instead of;

[code]

if(OrderStopLoss() < OrderOpenPrice() - Point * MoveStopTo) {

いい感じに動作するようです。

ありがとうございます。

 

ポジションサイジングカリキュレーターのヘルプ

OK。

ケリーフォーミュラに基づく関数として、ポジションサイジング計算機を作っています。

(勝率-((1-勝率)/(平均勝率/平均損失))

私は必要な変数のための手動入力(extern)で動作するオーバーオールコードと計算を持っており、今、特定のアカウント情報(すなわち、私は勝利一貫率(%)、勝利の貿易ごとに平均#ピップ、および損失の貿易ごとに平均#ピップを計算したい)呼び出しによって動的に関数を取得しようとしている。

3つの関数(WinRate AvgWin & AvgLoss)を動作させるために、あらゆる支援を得ることができます。 私は数ヶ月間、手動入力のバリエーションを使用しており、それは素晴らしい作品です。この(自動化された)バージョンの完全なコードがここにあります... テストでは、私は動的な出力を得ていない、すべてがデフォルトの設定(50、40、20)に戻ってしまいます。 私は、テストと既存のEAへの簡単なモジュール化のために、それ自身のEAとしてこれをセットアップしています。いったん任意のチャートに接続すると、出力はログ/エキスパートタブに印刷されます。これは、部分的なロットのポジションを取ることができる資金管理で将来的にフルに使用することを証明します(すなわち:1ロットの25%を削除します)。

私が必要とするリアルタイムのアカウント情報を収集するために、私はしようとしている...

1. すべてのトレードを数える

2. 利益が出ている取引を数える

などなど。

私はまたはこれは正しい方法について行っていないかもしれません。

すべての助けを事前にありがとうございました...

シーウルフ

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

#property copyright "seawolf" (著作権)

#property link "seawolf" (シーウルフリンク)

//+------------------------------------------------------------------+

//| 外部情報入力

//+------------------------------------------------------------------+

extern int MyAccount = 1001; //------>> アカウントID

extern int ExpertID = 500001; //------>>> このEAのマジックナンバー

extern double PipValue= 1.00; //------>> 全ての計算に使用します。

extern double LotCost= 50.0; //------>> 全ての計算に使用します。

extern double PercentMax= 24.0; //------>> 一度にレバレッジをかける口座の 最大%。

extern int TradesMax= 3; //------>> Simultaniouseトレードの最大値(例:24%/3トレード=8%/トレード)

extern bool UseKelly= true; //------>> マニュアルオーバーライドのトグル

extern double ManualLots= 1.0; //------>>UseKellyがfalseの場合のロット数

extern double mWinRate= 50.00; //------>> 勝率 (%) (手動オーバーライド)

extern int mAvgWin= 40; //------>> 勝ちトレードあたりの平均 pips (手動で変更可能)

extern int mAvgLoss= 20; //------>> 損失トレードあたりの平均 # pips (手動でオーバーライド)

//+------------------------------------------------------------------+

//| エキスパート初期化関数

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0);

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| エキスパートスタート機能

//+------------------------------------------------------------------+

int start()

{

//----

PositionSize()を使用します。

{

Print("Lots=",PositionSize()," WinRate=",WinRate()," AvgWin=",AvgWin()," AvgLoss=",AvgLoss());

Comment("現在時刻は ",TimeToStr(TimeCurrent(),TIME_MINUTES)," GMT ",TimeToStr(TimeCurrent(),TIME_DATE)," ...である。勝率= ",WinRate()," 平均勝率= ",AvgWin()," 平均損失= ",AvgLoss());

//----

return(0);

}

//----

//+------------------------------------------------------------------+

//| すべての新規取引に対してポジションサイズを計算します。

//+------------------------------------------------------------------+

//------------------------>>>>

double PositionSize()

{

//------------------------>> ケリー式を使用せず、フラットレートを使用する。

if(UseKelly == true)

{

double KelyForm = WinRate()-((1-WinRate())/(AvgWin()/AvgLoss()));

double PerTrade;

double Lots;

if(KelyForm > PercentMax)

{

PerTrade = (PercentMax/10)/TradesMax;

}

else if(KelyForm < PercentMax)

{

パートレード=(KelyForm/10)/TradesMax;

}

else if(KelyForm == PercentMax)

{

PerTrade = (KelyForm/10)/TradesMax;

}

Lots = (PerTrade * AccountBalance()/LotCost);

return(MathRound(Lots)/10);

}

}

//+------------------------------------------------------------------+

//| リアルタイムで口座情報を収集

//+------------------------------------------------------------------+

//------------------------>>>>

double WinRate()

{

double Ticket;

double CountWins = 0;

for(Ticket=0;Ticket<OrdersTotal();Ticket++)

{

OrderSelect(Ticket,SELECT_BY_TICKET,MODE_HISTORY);

if(MyAccount==AccountNumber() && OrderSymbol() ==Symbol() && OrderMagicNumber() == ExpertID)

{

if(OrderType()==OP_BUY)

{

if(OrderClosePrice() >= OrderOpenPrice())

CountWins++ です。

}

else if(OrderType()==OP_SELL)の場合。

{

if(OrderClosePrice() <= OrderOpenPrice())

CountWins++;

}

}

if(CountWins > 0)

return(MathRound(CountWins/OrdersHistoryTotal())*10);

さもなくば

Print("Real Time WinRate not Available");

return(mWinRate)とする。

}

//------------------------>>>>

double AvgWin()

{

double Ticket;

double CountTrades = 0;

double CountPips = 0;

for(Ticket=0;Ticket<OrdersTotal();Ticket++)

{

OrderSelect(Ticket,SELECT_BY_TICKET,MODE_HISTORY);

if(MyAccount==AccountNumber() && OrderSymbol() ==Symbol() && OrderMagicNumber() == ExpertID)

{

if(OrderType()==OP_BUY && OrderClosePrice()>=OrderOpenPrice())

CountTrades++;

{

if(OrderProfit()の >= 0)

CountPips++;

}

if(OrderType()==OP_SELL && OrderClosePrice()<=OrderOpenPrice()))

CountTrades++;

{

if(OrderProfit() >= 0)

CountPips++;

}

if(CountPips > 0)

return(MathRound(CountPips/CountTrades)*10);

さもなくば

Print("Real Time AvgWin not Available");

return(mAvgWin);

}

//------------------------>>>>

double AvgLoss()

{

double Ticket;

double CountTrades = 0;

double CountPips = 0;

for(Ticket=0;Ticket<OrdersTotal();Ticket++)

{

OrderSelect(Ticket,SELECT_BY_TICKET,MODE_HISTORY);

if(MyAccount==AccountNumber() && OrderSymbol() ==Symbol() && OrderMagicNumber() == ExpertID)

{

if(OrderType()==OP_BUY && OrderClosePrice()<OrderOpenPrice()))

CountTrades++;

{

if(OrderProfit()<0)の場合

CountPips++;

}

if(OrderType()==OP_SELL && OrderClosePrice()>OrderOpenPrice())

CountTrades++;

{

if(OrderProfit()<0)の場合

CountPips++;

}

if(CountPips > 0)

return(MathRound(CountPips/CountTrades)*10);

さもなくば

Print("Real Time AvgLoss not Available");

return(mAvgLoss);

}

//---------------------------------------------------------------------+

 

へ。マトリックスビズ

EDIT: if you change to;

if(0 < OrderOpenPrice() - Point * MoveStopTo) {

[/code]

instead of;

[code]

if(OrderStopLoss() < OrderOpenPrice() - Point * MoveStopTo) {

うまくいっているようですね。

ありがとうございます。

どういたしまして。

ビッグベー

 

Fxpro,質問

こんにちは、すべて。私はjuzはFxProでロットEAを設定する方法について質問したいのですが。

私はそれが6桁(1桁の余分な)持っているので、私は混乱し、私はS / LとT / Pを修正しましたが、私はロットを変更することはできません。

0.1や0.3に変更しても、常に0.4です。

私は10points 3 EAを使用しました。

助けてください。hansen_hardrocker@yahoo.co.id にメールをください。

またはPMお願いします.

cheerz all.

 

ask_change Lot (fxpro)

Fxpro,質問

こんにちは、すべて。私はFxProでロットEAを設定する方法について尋ねたいと思います...

私はそれが6桁(1桁の余分なもの)を持っているので、私は混乱し、私はS / LとT / Pを修正しましたが、私はロットを変更することはできません...

0.1や0.3に変更しても、常に0.4です。

私は10points 3 EAを使用しました。

助けてください。hansen_hardrocker@yahoo.co.id にメールをください。

またはPMお願いします.

cheerz all.

 

私も欲しいです。omidchart@yahoo.com まで送ってください。

 

EAでマネーマネジメントを 有効にしていることが原因だと思われます。

 

Thx

matrixebiz:
おそらく、EAでマネーマネジメントを有効にしているからでしょう。

Thx bro.

私は初心者です...

 

このEAを変更できますか?

こんにちは、プログラマーです。

このEAは、現在の価格の上下に逆指値注文 を出すものです。必要なのは、現在の価格の上下に逆指値注文を出すのではなく、指値注文を出すEAです。すべてのパラメータを同じにしたまま、このEAをそのように変更することは可能でしょうか?

よろしくお願いします。

ポール

ファイル: