絵馬クロス! - ページ 17

 
Audio:
VIVA codersguru !!!!---Hi hellkas where are you, neet to see these one my friend.

Hi Audio my friend...

このEAは本当に素晴らしいです...SuperCodersGuruにとても感謝しています。

簡単な質問があります。

このEA v2をフォワードテストしているのですが、何か変なことに気づきました...

私は異なるプラットフォームで4つの異なる設定をしていますが、すべて同じブローカー(NorthFinance)で、昨日は1つのポジションしか開いておらず、それが普通だと思っていましたが、今日は同じポジションがまだ開いていて、おかしいと思いました。プラットフォームを再起動すると、新しいポジションがオープンしました。

なぜEAは私がプラットフォームを再起動するまで取引を停止するのでしょうか?

ありがとうございます。

ファイル:
emacross.htm  22 kb
 

備考

まだこのEAを使っています。トレンドに逆らったトレードで負けることが多いことに気がつきました。このEAで、トレンドに沿ったトレードだけを行うオプションを作ることは可能でしょうか?

これからもよろしくお願いします。

 

逆転の発想!?

Hendrick:
まだこのEAを使っています。トレンドに逆らったトレードで負けることが多いことに気がつきました。このEAにトレンドに沿ったトレードだけを行うオプションを作ることは可能でしょうか? これからも良い仕事をお願いします。

ヘンドリック

このオプションはすでに含まれています!

トレンドに従いたい場合は、reversaloptionを falseに 設定するだけです。

 

おっと!

codersguru:
ヘンドリック。

このオプションはすでに含まれています

トレンドに乗りたいなら、reversaloptionを falseに 設定すればいいだけです。

おっと。ごめんなさいGuru。

 
hellkas:
こんにちは、オーディオ、私の友人...

このEAは本当に素晴らしいです...。SuperCodersGuruにとても感謝しています。

簡単な質問があります。

このEA v2をフォワードテストしているのですが、奇妙なことに気づきました...

私は異なるプラットフォームで4つの異なる設定をしていますが、すべて同じブローカー(NorthFinance)で、昨日は1つのポジションしか開いておらず、それが普通だと思っていましたが、今日は同じポジションがまだ開いていて、おかしいと思いました。プラットフォームを再起動すると、新しいポジションがオープンしました。

なぜEAはプラットフォームを再起動するまで取引を停止するのでしょうか?

サンクス

こんにちは、お久しぶりです!お元気でしたか?このような場合、Codersguruがより良い方法で返答してくれると思います。

 

こんにちは、CodersGuruです。

あなたのEAにアイディアがあります。TP、TS、SLを削除して、できるだけシンプルにしたいと思います。そうですね、クレイジーですね。

そして、単純にクロスの間のMAをトレードさせます。

1,アップクロスで、1バー待って、ロングする。

2、次のダウンクロスで取引を終了します。

3、もう一本待って、MAがまだ下ならショートを建てる。

設定するのはロットサイズだけです。

MAが反対方向にクロスしたら、すぐに取引を終了する。

これは、ケーブルのようなトレンドのあるペアで、小さなスプレッドで使わなければならない。なぜなら、大きなスプレッドのペアは、マーケットがレンジになり始めると、利益を取ってしまうからだ。

おかしな話かもしれませんが、外部からの影響をまったく受けずに、純粋に価格変動だけを頼りに取引を行うことになります。事実上、マーケットが自分自身で取引しているようなものです。

時間枠とMAの設定で遊んでみるのも面白いかもしれませんね。

今のところ、TP,SL,TSをオフにするオプションを入れています。

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

//| EMA_CROSS.mq4 |。

//| コーダーの達人|

//|https://www.mql5.com/en/forum|

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

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

//| TODO: マネーマネージメント・ルーチンを追加する。

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

#property copyright "コーダーの達人"

#property link "https://www.forex-tsd.com"

//---- 入力パラメータ

extern double TakeProfit=300;

extern bool UseTakeProfit = false;

extern double Lots=1;

extern double TrailingStop=15;

extern bool UseTrailingStop = false; extern double TrailingStop=15; extern bool UseTrailingStop = false;

extern double StopLoss=100; extern bool UseTrailingStop = false; extern double StopLoss=100;

extern bool UseStopLoss = false;

extern int ShortEma = 10;

extern int LongEma = 80;

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

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

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

int init()

{

//----

//----

return(0);

}

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

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

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

int deinit()

{

//----

//----

return(0);

}

bool isNewSymbol(string current_symbol)

{

//開いた注文を全てループし、シンボルを比較する

int total = OrdersTotal();

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

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

Print( "OrderSymbol = " + OrderSymbol() + ": Symbol = " + current_symbol);

string selected_symbol = OrderSymbol();

if (current_symbol == selected_symbol)

return (False);

}

return (True);

}

int Crossed (double line1 , double line2)

{

static int last_direction = 0;

static int current_direction = 0;

//最初のロードでは動作しないので、最初のクロスを待つ!

static bool first_time = true;

if(first_time == true)

{

first_time = falseです。

return (0);

if(line1>line2)current_direction = 1; //上方向

if(line1<line2)カレント_ディレクション = 2; //ダウン

if(current_direction != last_direction) //変更されました。

{

last_direction = current_direction;

return (last_direction);

}

それ以外

{

return (0); //変更なし

}

}

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

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

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

int start()

{

//----

int cnt, ticket, total;

double SEma, LEma;

if(Bars<100)

{

Print("bars less than 100");

return(0);

}

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

{

Print("TakeProfitが10未満");

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

}

SEma = iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,0)。

LEma = iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,0);

静的 int isCrossed = 0;

isCrossed = Crossed (LEma,SEma);

total = OrdersTotal();

if(total < 1 || isNewSymbol(Symbol()))

{

if(isCrossed == 1 )

{

if(UseStopLoss)

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,「EMA_CROSS」12345,0,Green).のようになります。

さもなくば

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point, "EMA_CROSS",12345,0,Green)。

if(チケット>0)

{

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

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

return(0);

}

if(isCrossed == 2)

{

if(UseStopLoss)

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,「EMA_CROSS」12345,0,赤).を指定します。

さもなくば

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point, "EMA_CROSS", 12345,0,Red);

if(ticket>0)

{

if(オーダーセレクト(チケット,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);

//OrderPrint();

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol()))

{

if(OrderType()==OP_BUY) // ロングポジションが開かれる

{

// クローズすべきでしょうか?

/* 削除されました - トレーリングストップのみのクローズ

if(isCrossed == 2)

{

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(isCrossed == 1)

{

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);

}

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

今ひとつわからないのが、トレードの終了方法です。TSを無効化したということでよろしいでしょうか?

コードの改変はお気になさらないで下さいね。

ありがとうございます。

 

その後にバーを開き、次のクロスで閉じるというのは良いアイデアだと思います(トレーリング・ストップロスを使えば利益を確定しやすいかもしれません)。特に、主要なペアで市場が再びトレンドになり始めたときは、カウンタートレンドよりもプロトレンドの方がずっと理にかなっています。 横ばい/横ばい相場では、カウンタートレンドのトレーダーは理にかなっていますが、よりリスクが高く、プロトレンドのトレーダーがすぐに取引を行うのとは対照的に、プラスになるまでに3ヶ月(日足チャート)待つ必要があるかもしれません。

MA_Crossはストップロスを+20くらいで利益確定してくれるので、一度トレードが利益になれば、もう証拠金を持つ必要がないところが気に入っています。

グラハム

 

グラハムさん、こんにちは。

はい、このアイデアは、よりトレンドの強いペアをいくつか見たときに思いつきました。多くの場合、ロングでもショートでも、常にピップが稼動しています。

私は単純にそれを利用したいのです。

この行の状態をfalseからtrueに変更するだけで、トレーリングストップを使用するオプションがあります。

"外部 bool UseTrailingStop = false;"

しかし、私はコーディングの全くの初心者なので(CodersGuruに感謝 )、プログラムが現在どのように取引を終了しているのかよくわかりません。ストップロスを探しているのでしょうか?私はまだ注文の決済を勉強しているところです。

また、5分、15分、30分、1時間足などの小さなTFで、MAを小さくして小さなトレンドを拾うような使い方も考えています。

 

バグ!?

hellkas:
こんにちはオーディオ私の友人...

このEAは本当に素晴らしいです。SuperCodersGuruにとても感謝しています。

簡単な質問があります。

このEA v2をフォワードテストしているのですが、奇妙なことに気づきました...

私は異なるプラットフォームで4つの異なる設定をしていますが、すべて同じブローカー(NorthFinance)で、昨日は1つのポジションしか開いておらず、それが普通だと思っていましたが、今日は同じポジションがまだ開いていて、おかしいと思いました。プラットフォームを再起動すると、新しいポジションがオープンしました。

なぜEAは私がプラットフォームを再起動するまで取引を停止するのでしょうか?

サンクス

hellkasさん

ご投稿ありがとうございます。

月曜日に確認 しなければなりません。