コーディングのヘルプ - ページ 469 1...462463464465466467468469470471472473474475476...786 新しいコメント 削除済み 2015.05.06 15:18 #4681 こんにちは、トレーダーです。 この2つの.ex4ファイルに含まれるIndicatorは何なのか、どなたか教えていただけませんか? よろしくお願いします、oink! ファイル: str_alertsignal.ex4 12 kb str_conf_1.ex4 10 kb Mladen Rakic 2015.05.06 16:10 #4682 oink!: こんにちは、トレーダーです。この2つの.ex4ファイルに含まれるIndicatorは何なのか、どなたか教えてください! よろしくお願いします、oink! アラートシグナルは、矢印を表示するために作られたシンプルなジグザグです。 ファイル: zz.gif 76 kb 削除済み 2015.05.06 17:35 #4683 Thanksmladen さん、10000人くらいのインディケーターでお名前は存じております!;-) それから、zigzag+arrowsのインジケータを ググっています。 もう1つは未定義ですか? oinkさん、よろしくお願いします。 Mladen Rakic 2015.05.06 18:01 #4684 oink!:Thanksmladen さん、10000個くらいのIndikatorsで名前知ってますよ!;-)それから、ジグザグ+矢印のインジケータをググっています。 もう1つは未定義? よろしくお願いします、oink! 正直、他は認識できませんでした。すみません。 Jovager 2015.05.07 04:28 #4685 こんにちは。 この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); } // 終了。 Coding help コーディングの方法は? 生のアイデア Mladen Rakic 2015.05.07 04:54 #4686 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 sunshineh 2015.05.07 05:12 #4687 mladenさん、こんにちは。 私は変数 "LossValue "と同じ値で私のprofitOrderの部分的な売却をしたいです。 私は以下の手順でロットサイズを計算しようとしました。 -ProfitOrderから実際のProfitを読み出す。 - ProfitPerLotstepを計算する -LossValue/ProfitPerLotstepを計算し、Lot-resultを切り上げる。 -しかし、このLotサイズを売ると、Profit Valueが小さすぎます(スプレッドのせいだと思います)。 正しい計算方法は何ですか? sunshineh 2015.05.07 05:52 #4688 追加質問です。 部分的にクローズした場合、残りのポジションはブローカーによって自動的にオープンにされます。以前は、Positionにコメントをつけて、そのPositionを区別していました。今はどのように認識すればよいのでしょうか? Mladen Rakic 2015.05.07 11:01 #4689 sunshineh: 追加質問ですが、Partial Closeをすると、残りのPositionはBrokerによって自動的にopendされます。以前は、Positionにコメントをつけて、そのPositionを区別していました。今、どのように認識すればよいのでしょうか? 日向 あなたは何もすることができません ブローカーだけが注文のコメント欄を変更することができます。ブローカーがコメントを変更し、"from nnnn"(nnnnは前のチケット番号)のように伝えることもできますが、ほとんどの場合そうではないので、そのような場合に前の注文を一意に特定できる解決策は残っていないのです。 sunshineh 2015.05.07 11:34 #4690 ありがとうmladenあなたは100ユーロのような定義された値に応じてロットサイズから計算で前に私のポストへの解決策を持っていますか? 1...462463464465466467468469470471472473474475476...786 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
こんにちは、トレーダーです。
この2つの.ex4ファイルに含まれるIndicatorは何なのか、どなたか教えていただけませんか?
よろしくお願いします、oink!
こんにちは、トレーダーです。
この2つの.ex4ファイルに含まれるIndicatorは何なのか、どなたか教えてください!
よろしくお願いします、oink!アラートシグナルは、矢印を表示するために作られたシンプルなジグザグです。
Thanksmladen さん、10000人くらいのインディケーターでお名前は存じております!;-)
それから、zigzag+arrowsのインジケータを ググっています。
もう1つは未定義ですか?
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);
}
// 終了。
こんにちは。
私はこの電子が動作しない理由を理解していない、コンパイルは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);
}
// 終了私のバックテストでは動作します。
mladenさん、こんにちは。
私は変数 "LossValue "と同じ値で私のprofitOrderの部分的な売却をしたいです。
私は以下の手順でロットサイズを計算しようとしました。
-ProfitOrderから実際のProfitを読み出す。
- ProfitPerLotstepを計算する
-LossValue/ProfitPerLotstepを計算し、Lot-resultを切り上げる。
-しかし、このLotサイズを売ると、Profit Valueが小さすぎます(スプレッドのせいだと思います)。
正しい計算方法は何ですか?
追加質問です。
部分的にクローズした場合、残りのポジションはブローカーによって自動的にオープンにされます。以前は、Positionにコメントをつけて、そのPositionを区別していました。今はどのように認識すればよいのでしょうか?
追加質問ですが、Partial Closeをすると、残りのPositionはBrokerによって自動的にopendされます。以前は、Positionにコメントをつけて、そのPositionを区別していました。今、どのように認識すればよいのでしょうか?
日向
あなたは何もすることができません
ブローカーだけが注文のコメント欄を変更することができます。ブローカーがコメントを変更し、"from nnnn"(nnnnは前のチケット番号)のように伝えることもできますが、ほとんどの場合そうではないので、そのような場合に前の注文を一意に特定できる解決策は残っていないのです。
ありがとうmladenあなたは100ユーロのような定義された値に応じてロットサイズから計算で前に私のポストへの解決策を持っていますか?