コーディングのヘルプ - ページ 469

 

こんにちは、トレーダーです。

この2つの.ex4ファイルに含まれるIndicatorは何なのか、どなたか教えていただけませんか?

よろしくお願いします、oink!

ファイル:
 
oink!:
こんにちは、トレーダーです。

この2つの.ex4ファイルに含まれるIndicatorは何なのか、どなたか教えてください!

よろしくお願いします、oink!

アラートシグナルは、矢印を表示するために作られたシンプルなジグザグです。

ファイル:
zz.gif  76 kb
 

Thanksmladen さん、10000人くらいのインディケーターでお名前は存じております!;-)

それから、zigzag+arrowsのインジケータを ググっています。

もう1つは未定義ですか?

oinkさん、よろしくお願いします。

 
oink!:
Thanksmladen さん、10000個くらいのIndikatorsで名前知ってますよ!;-)

それから、ジグザグ+矢印のインジケータをググっています。

もう1つは未定義?

よろしくお願いします、oink!

正直、他は認識できませんでした。すみません。

 

こんにちは。

このEAがなぜ動かないのか理解できません。コンパイルはOKで、ジャーナルにもエキスパートタブにも何も表示されませんが、取引は一切できません。

事前にありがとうございます。

Jo

extern int magicNum=200;

extern double TakeProfit = 50;

extern double Lots = 0.01;

extern double TrailingStop = 30;

//extern double MACDOpenLevel=3;

//extern double MACDCloseLevel=2; //extern double MACDOpenLevel=2;

extern double MATrendPeriod=5;

int start()

{

double MaCurrent,MaPrevious,MavPrevious;

double close=iClose(Symbol(),0,0)。

double vclose=iClose(Symbol(),0,1)。

double vvclose=iClose(Symbol(),0,2)。

// double MacdCurrent, MacdPrevious, SignalCurrent;

// double SignalPrevious, MaCurrent, MaPrevious;

// double RSIj,RSIv;

int cnt, ticket, total;

// 初期データチェック

// エキスパートが通常のチャートで動作していることを確認することが重要です。

// エキスパートが通常のチャートで動作し、ユーザが外部変数の設定を間違えていないことを確認することが重要です。

// 外部変数(Lots, StopLoss, TakeProfit,

// TrailingStop)の設定に誤りがないことを確認することが重要です。

// 100以下のバーのチャートで

if(Bars<100)

{

Print("bars less than 100");

return(0);

}

if(テイクプロフィット<10)

{

Print("TakeProfitが10未満");

return(0); // TakeProfitのチェック

}

コードを簡素化し、アクセスを高速化するために、 // データは内部変数に入れられます。

// データは内部変数に入れられる

// MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0)とします。

// MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1)。

// SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0); // SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);

// SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1); // SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);

MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,0);

MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,1);

MavPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,2); MavPrevious=iMA(NULL,0,MODE_SMA,PRICE_CLOSE,2)

double PlusHaut =High;

double PlusBas =Low;

double TiersHaut =PlusBas +((PlusHaut-PlusBas)*0.66);

double TiersBas =PlusBas +((PlusHaut-PlusBas)*0.33)。

// RSIj= iRSI(NULL,0,9,PRICE_CLOSE,0);

// RSIv= iRSI(NULL,0,9,PRICE_CLOSE,1); // RSIj= iRSI(NULL,0,9,PRICE_CLOSE,1);

total=OrdersTotal();

if(total<1)

{ // 未決済注文がないことを確認

if(AccountFreeMargin()<(1000*Lots))

{

Print("We have no money.フリーマージン = ", AccountFreeMargin());

return(0);

// ロングポジション(BUY)の可能性を確認する

もし

// (RSIv30)

( MaCurrent >MaPrevious)

// && (MaPreviousvclose||vclose>vvclose))の場合。

// (MacdCurrentSignalCurrent && MacdPrevious<SignalPrevious &&)

// MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point, "MA", magicNum,0,Green).If(ticket>0);

if(チケット>0)

{

if(オーダーセレクト(ticket,SELECT_BY_TICKET,MODE_TRADES))Print("BUY order opened : ",OrderOpenPrice());

else Print("BUY注文の開始エラー :",GetLastError())。

return(0);

}

// ショートポジション(売り)の可能性を確認する

// if (RSIv>70 && RSIj<70)

if ( MaCurrent <MaPrevious)

// && (MaPrevious>MavPrevious) && (close<vclose || vclose<vvclose))

// (MacdCurrent>0 && MacdCurrentSignalPrevious &&)

// MacdCurrent>(MACDOpenLevel*Point) && MaCurrent<MaPrevious)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,「MA」,magicNum,0,Red);

if(ticket>0)

{

if(オーダーセレクト(ticket,SELECT_BY_TICKET,MODE_TRADES))Print("SELL order opened : ",OrderOpenPrice());

else Print("SELL注文の開始エラー :",GetLastError());

return(0);

return(0)。

// 市場に正しく参入することは重要です。

// しかし、正しく終了することはもっと重要です。

for(cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && // 開いたポジションをチェック)

OrderSymbol()==Symbol()) // シンボルをチェック

{

if(OrderType()==OP_BUY)の場合 // ロングポジションがオープン

{

// クローズすべきか?

// if(MacdCurrent>0 && MacdCurrentSignalPrevious && (MacdCurrentSignalPrevious &&))

// MacdCurrent>(MACDCloseLevel*Point))

// if (RSIv>70 && RSIj<70)

if ( MaCurrent <MaPrevious)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // ポジションクローズ

return(0); // 終了

// トレーリングストップをチェック

if(TrailingStop>0)

{

if(Bid-OrderOpenPrice()>Point*TrailingStop)

{

if(オーダーストップ・ロス()<ビッド-ポイント*トレイリングストップ)

{

オーダーモディファイ(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

return(0);

}

}

}

}

else // ショートポジションに移動

{

// クローズすべきか?

// if(MacdCurrentSignalCurrent &&)

// MacdPrevious(MACDCloseLevel*Point))

if

// (RSIv30)

( MaCurrent >MaPrevious)

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // クローズポジション

return(0); // 終了

// トレーリングストップをチェック

if(TrailingStop>0)

{

if((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

if((OrderStopLoss()>(Ask+Point*TrailingStop)))をチェックします。| (OrderStopLoss()==0))の場合

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red).OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProtect(),0,Red);

return(0);

}

}

}

}

}

}

return(0);

}

// 終了。

 
Jovager:
こんにちは。

私はこの電子が動作しない理由を理解していない、コンパイルはOK、ジャーナルでもエキスパートタブでも何もない、しかし、任意の取引。

事前にありがとうございます。

Jo

extern int magicNum=200;

extern double TakeProfit = 50;

extern double Lots = 0.01;

extern double TrailingStop = 30;

//extern double MACDOpenLevel=3;

//extern double MACDCloseLevel=2; //extern double MACDOpenLevel=2;

extern double MATrendPeriod=5;

int start()

{

double MaCurrent,MaPrevious,MavPrevious;

double close=iClose(Symbol(),0,0)。

double vclose=iClose(Symbol(),0,1)。

double vvclose=iClose(Symbol(),0,2)。

// double MacdCurrent, MacdPrevious, SignalCurrent;

// double SignalPrevious, MaCurrent, MaPrevious;

// double RSIj,RSIv;

int cnt, ticket, total;

// 初期データチェック

// エキスパートが通常のチャートで動作していることを確認することが重要です。

// エキスパートが通常のチャートで動作し、ユーザが外部変数の設定を間違えていないことを確認することが重要です。

// 外部変数(Lots, StopLoss, TakeProfit,

// TrailingStop)の設定に誤りがないことを確認することが重要です。

// 100以下のバーのチャートで

if(Bars<100)

{

Print("bars less than 100");

return(0);

}

if(テイクプロフィット<10)

{

Print("TakeProfitが10未満");

return(0); // TakeProfitのチェック

}

コードを簡素化し、アクセスを高速化するために、 // データは内部変数に入れられます。

// データは内部変数に入れられる

// MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0)とします。

// MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1)。

// SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0); // SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);

// SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1); // SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);

MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,0);

MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,1);

MavPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,2); MavPrevious=iMA(NULL,0,MODE_SMA,PRICE_CLOSE,2)

double PlusHaut =High;

double PlusBas =Low;

double TiersHaut =PlusBas +((PlusHaut-PlusBas)*0.66);

double TiersBas =PlusBas +((PlusHaut-PlusBas)*0.33)。

// RSIj= iRSI(NULL,0,9,PRICE_CLOSE,0);

// RSIv= iRSI(NULL,0,9,PRICE_CLOSE,1); // RSIj= iRSI(NULL,0,9,PRICE_CLOSE,1);

total=OrdersTotal();

if(total<1)

{ // 未決済注文がないことを確認

if(AccountFreeMargin()<(1000*Lots))

{

Print("We have no money.フリーマージン = ", AccountFreeMargin());

return(0);

// ロングポジション(BUY)の可能性を確認する

もし

// (RSIv30)

( MaCurrent >MaPrevious)

// && (MaPreviousvclose||vclose>vvclose))の場合。

// (MacdCurrentSignalCurrent && MacdPrevious<SignalPrevious &&)

// MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point, "MA", magicNum,0,Green).If(ticket>0);

if(チケット>0)

{

if(オーダーセレクト(ticket,SELECT_BY_TICKET,MODE_TRADES))Print("BUY order opened : ",OrderOpenPrice());

else Print("BUY注文の開始エラー :",GetLastError())。

return(0);

}

// ショートポジション(売り)の可能性を確認する

// if (RSIv>70 && RSIj<70)

if ( MaCurrent <MaPrevious)

// && (MaPrevious>MavPrevious) && (close<vclose || vclose<vvclose))

// (MacdCurrent>0 && MacdCurrentSignalPrevious &&)

// MacdCurrent>(MACDOpenLevel*Point) && MaCurrent<MaPrevious)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,「MA」,magicNum,0,Red);

if(ticket>0)

{

if(オーダーセレクト(ticket,SELECT_BY_TICKET,MODE_TRADES))Print("SELL order opened : ",OrderOpenPrice());

else Print("SELL注文の開始エラー :",GetLastError());

return(0);

return(0)。

// 市場に正しく参入することは重要です。

// しかし、正しく終了することはもっと重要です。

for(cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && // 開いたポジションをチェック)

OrderSymbol()==Symbol()) // シンボルをチェック

{

if(OrderType()==OP_BUY)の場合 // ロングポジションがオープン

{

// クローズすべきか?

// if(MacdCurrent>0 && MacdCurrentSignalPrevious && (MacdCurrentSignalPrevious &&))

// MacdCurrent>(MACDCloseLevel*Point))

// if (RSIv>70 && RSIj<70)

if ( MaCurrent <MaPrevious)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // ポジションクローズ

return(0); // 終了

// トレーリングストップをチェック

if(TrailingStop>0)

{

if(Bid-OrderOpenPrice()>Point*TrailingStop)

{

if(オーダーストップ・ロス()<ビッド-ポイント*トレイリングストップ)

{

オーダーモディファイ(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

return(0);

}

}

}

}

else // ショートポジションに移動

{

// クローズすべきか?

// if(MacdCurrentSignalCurrent &&)

// MacdPrevious(MACDCloseLevel*Point))

if

// (RSIv30)

( MaCurrent >MaPrevious)

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // クローズポジション

return(0); // 終了

// トレーリングストップをチェック

if(TrailingStop>0)

{

if((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

if((OrderStopLoss()>(Ask+Point*TrailingStop)))をチェックします。| (OrderStopLoss()==0))の場合

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red).OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProtect(),0,Red);

return(0);

}

}

}

}

}

}

return(0);

}

// 終了

私のバックテストでは動作します。

ファイル:
jo.gif  90 kb
 

mladenさん、こんにちは。

私は変数 "LossValue "と同じ値で私のprofitOrderの部分的な売却をしたいです。

私は以下の手順でロットサイズを計算しようとしました。

-ProfitOrderから実際のProfitを読み出す。

- ProfitPerLotstepを計算する

-LossValue/ProfitPerLotstepを計算し、Lot-resultを切り上げる。

-しかし、このLotサイズを売ると、Profit Valueが小さすぎます(スプレッドのせいだと思います)。

正しい計算方法は何ですか?

 

追加質問です。

部分的にクローズした場合、残りのポジションはブローカーによって自動的にオープンにされます。以前は、Positionにコメントをつけて、そのPositionを区別していました。今はどのように認識すればよいのでしょうか?

 
sunshineh:
追加質問ですが、Partial Closeをすると、残りのPositionはBrokerによって自動的にopendされます。以前は、Positionにコメントをつけて、そのPositionを区別していました。今、どのように認識すればよいのでしょうか?

日向

あなたは何もすることができません

ブローカーだけが注文のコメント欄を変更することができます。ブローカーがコメントを変更し、"from nnnn"(nnnnは前のチケット番号)のように伝えることもできますが、ほとんどの場合そうではないので、そのような場合に前の注文を一意に特定できる解決策は残っていないのです。

 

ありがとうmladenあなたは100ユーロのような定義された値に応じてロットサイズから計算で前に私のポストへの解決策を持っていますか?