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

 
mladen:
stevenpun 買いは0.1ロット+0.2ロット、売りは0.4ロットでいいと言っていますね。それを明確にすることを気にしますか?

こんにちはmladen、返信が遅れて申し訳ありません。

数日前から体調を崩していたためです。

私は絵を作成しました。

例えば、買いが2つのオープンオーダー(0.1Lot + 0.2Lot )を持っているとき、しかし突然列車は売りに変更しました。

eaは0.1ロットで売りを開きますが、私はそれが0.4ロットのために開きたい。

それはそれを修正することは可能ですか?

ファイル:
lot_explain.jpg  121 kb
 
hermes:
あらためてこんにちは。

上記をコメント付きで使ってみましたが、Maxしか表示されません。2つの関数で助けてもらえますか?1つはBidより上の即時のlinepriceを表示し、2つ目はBidより下のlineを表示する。ありがとうございます。

以下はそのコードです。

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

//| SimpleGrid.mq4+

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

#include

#include

#property strict

// エクスポートされた変数

extern string GridStartingPrice = " 行を配置するための開始価格 ";

extern double GSP = 0.0;

extern int GR = 5;

extern double GridStep = 5;

extern color CGL = Gold;

extern color BGL = Green(外部カラーBGL = グリーン

extern color SGL = Red;

extern bool ClearAllObjects = False;

// ローカル変数

double PipValue=1; // この変数は、5桁のブローカーをサポートするためにここにあります。

bool Terminated = False;

string LF = "\n"; // カスタムブロックやユーティリティブロックの中で改行が必要な場合に使用します。

int NDigits = 4; // 主にFlexタイプのブロックのNormalizeDoubleに使用されます。

int ObjCount = 0; // チャート上に作成された全オブジェクトの数、ユニークな名前のオブジェクトを作成可能

int current = 0;

int init()

{

NDigits = Digits;

if (false) ObjectsDeleteAll(); // チャートを消去します。

Comment(""); // グラフを消す

return(0);

}

// エキスパートスタート

int start()

{

if (Bars < 10)

{

Comment("バーが足りません");

return (0);

if (終端 == true)

{

Comment("EAが終了しました。");

return (0);

}

OnEveryTick7();

return (0);

}

void OnEveryTick7()

{

PipValue = 1;

if (NDigits == 3 || NDigits == 5) PipValue = 10;

CentreGridLine()。

}

void CentreGridLine()

{ if (ObjectFind("CGL") == (-1) )

{

{

文字列 objName = "CGL" ;

ObjectCreate(objName, OBJ_HLINE, 0, Time[0],GSP);

ObjectSet(objName, OBJPROP_PRICE1, GSP); ObjectSet(objName, OBJPROP_PRICE1, GSP);

ObjectSet(objName, OBJPROP_COLOR,CGL);

}

TradeLine();

UprBnd();

LwrBnd()。

}

}

void TradeLine()

{

int i;

double GridStep1= (GridStep*2);

double BGSP= (GSP+((GridStep/2)*PipValue*Point)) ;

double SGSP= (GSP-((GridStep/2)*PipValue*Point)); double BBGSP= (GSP-((GridStep/2)*PipValue*Point));

double BBGSP= (BGSP-((GridStep*(GR))*PipValue*Point)) ;

double SSGSP= (SGSP+((GridStep*(GR))*PipValue*Point));

{

for(i=0; i<GR;i++)

{

SGL("売り "+i,BBGSP+GridStep1*i*PipValue*Point)。

}

}

{

for(i=0; i<GR;i++)

{

BGL("買い "+i,SSGSP-GridStep1*i*PipValue*Point)を表示します。

}

}

}

void BGL(string objName, double price)

{

ObjectCreate(objName, OBJ_HLINE, 0, 0, price);

ObjectSet(objName, OBJPROP_STYLE, STYLE_SOLID);

ObjectSet(objName, OBJPROP_WIDTH, 1); ObjectSet(objName, OBJPROP_WIDTH, 1);

ObjectSet(objName, OBJPROP_COLOR, BGL);

}

void SGL(string objName, double price)

{

ObjectCreate(objName, OBJ_HLINE, 0, 0, price);

ObjectSet(objName, OBJPROP_STYLE, STYLE_SOLID); ObjectSet(objName, OBJPROP_STYLE, STYLE_SOLID);

ObjectSet(objName, OBJPROP_WIDTH, 1); ObjectSet(objName, OBJPROP_WIDTH, 1);

ObjectSet(objName, OBJPROP_COLOR, SGL);

}

void UprBnd()

{ if (ObjectFind("UPRBND") == (-1) )

{

double BGSP= (GSP+((GridStep/2)*PipValue*Point)) ;

double price= (BGSP+((GridStep*(GR))*PipValue*Point)) ;

文字列 objName = "UPRBND" ;

オブジェクトの作成(objName, OBJ_HLINE, 0, Time[0], price );

ObjectSet(objName, OBJPROP_PRICE1,price) ; ObjectSet(objName, OBJPROP_PRICE1,price);

ObjectSet(objName, OBJPROP_COLOR, DodgerBlue); ObjectSet(objName, OBJPROP_COLOR, DodgerBlue);

ObjectSet(objName, OBJPROP_WIDTH,3);

}

}

void LwrBnd()

{ if (ObjectFind("LWRBND") == (-1) )

{

double SGSP= (GSP-((GridStep/2)*PipValue*Point));

double price= (SGSP-((GridStep*(GR))*PipValue*Point));

string objName = "LWRBND" ;

ObjectCreate(objName, OBJ_HLINE, 0, Time[0], price ).ObjectSet(objName, OBJ_HLINE, 0, Time[0], price);

ObjectSet(objName, OBJPROP_PRICE1,price) ; ObjectSet(objName, OBJPROP_PRICE1,price);

ObjectSet(objName, OBJPROP_COLOR, Tomato); ObjectSet(objName, OBJPROP_COLOR, Tomato);

ObjectSet(objName, OBJPROP_WIDTH, 3);

}

}

int deinit()

{

if (ClearAllObjects) ObjectsDeleteAll();

return (0);

}

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

エルメス

mq4ファイルを添付していただけますか?

 
mladen:
エルメス mq4ファイルを添付していただけますか?

ここにあります。サンクス

ファイル:
simpleg.mq4  4 kb
 

こんにちは。

私が作ったEaについて手助けが必要です。それは2つの移動平均と トレンドをフィルターするための2つの異なる時間枠に関連しています。私は取引をフィルターするためにRSI指標を追加したいと思います。例えば、RSI期間8レベル50、クロスでRSIレベル50より高い場合は、売り成行注文のみを開き、クロスでRSIレベル50より低い場合は、買い成行注文のみを開く設定です。Eaを添付しますが、最初はkeltnerchannelsに関連していましたが、今はMa1とMa2としてのみ使用したいのです。

いくつかのボディは、この変更で私を助けることができますか?

ありがとうございます。

ファイル:
 
hermes:
これです。ありがとうございます

エルメス

これを試してみてください :simpleg_1.mq4

ファイル:
simpleg_1.mq4  6 kb
 
daniel1983:
こんにちは。

私が作ったEaについて助けが必要です。それは2つの移動平均とトレンドをフィルターするための2つの異なるタイムフレームに関連しています。私は取引をフィルターするためにRSI指標を追加したいと思います。例えばRSI期間8のレベル50を設定し、クロスしたときにRSIレベル50より高ければ売り成行注文だけを出し、クロスしたときにRSIレベル50より低ければ買い成行注文だけを出します。Eaを添付しますが、最初はkeltnerchannelsに関連していましたが、今はMa1とMa2としてのみ使用したいです。

いくつかのボディは、この変更で私を助けることができますか?

ありがとうございます。

ダニエル1983

masとrsisが同時にクロスすることはないでしょう(つまり、シグナルが出ることはないでしょう)。試しに、あなたが説明したようなことをする簡単なインジケータを作ってみてください。

 
mladen:
daniel1983 ほぼ間違いなく、masとrsisが同時にクロスすることはありません(つまり、ほとんどシグナルが出ないということです)。試しに、あなたが説明したような簡単なインジケータを作ってみてください。

こんにちは、ムラデンです。

つまり

- 0から50の間のどのレベルでも、売りのみ

- 50と100の間のどのレベルでも、買いだけです。

この同じ交差点ではなく、交差は、より高い時間枠のトレンドと確認し、買い市場注文のための任意のレベル(43、41、18、25)であることができます。私はこれをテストし、注文の約80%は、このフィルタと反対方向に開くことはありませんように見える開かれた。

今、Eaが買い注文を出すのは、クロスが下降トレンドに入り始めた時ですが、このフィルターを使うと、80%のケースで、この時点で注文を入れずにクロスをフィルターします。

このEaでは上位の時間枠を入力しましたが、下位の時間枠でトレンドのフィルタリングを行った方が良い結果を得ることができました。

テスト用の設定例の画像を添付します。

EURUSDの場合

この場合、EMA 2とEMA 67、そしてRSI (8) timeframe 1minとHitimeframe 5minを使用していますが、この場合、利益の出ない買い注文があり、この買い注文はEMaのクロスで発生しますがRSIは50以下のレベルです。

次に、クロスで開くがRSIが50以下の売り成行注文があります。この注文は、すべてのシグナルからフィルタリングしたい正しい成行注文です。

これを行うことは可能でしょうか?

ありがとうございました。

ダニエル

ファイル:
rsi_filter.png  32 kb
 
mladen:
エルメス 試してみてください :simpleg_1.mq4

こんにちは、Mladenです。

これを使用してようやく動作するようになりました。ありがとうございました。

void LoopBS()

{

double max =(ObjectGet("UPRBND",OBJPROP_PRICE1)); double min =(ObjectGet("LWRBND",OBJPROP_PRICE1));

double min =(ObjectGet("LWRBND",OBJPROP_PRICE1)); double min =(ObjectGet("LWRBND",OBJPROP_PRICE1));

for (int i =ObjectsTotal()-1; i>=0; i--)

{

文字列名 = ObjectName(i);

if (StringSubstr(name,0,3)=="買い")

{

double BS=ObjectGet(name,OBJPROP_PRICE1);

if ((Ask<BS) && (BSmin))

{

max = ObjectGet(name,OBJPROP_PRICE1)。

{

Comment(DoubleToStr(BS,Digits)," ");

}

}

}

}

}

 

不正確な信号

不正確な信号

職人さんたちへもっと良い信号を出してくれませんか。M1、M5、M15

ファイル:
.......png  31 kb
 
DMNIK:
不正確な信号親愛なる、職人あなたはより良い行うに信号を送ることができます。M1、M5、M15

単純に過去3回の終値が過去3回の始値より大きいか小さいかを表示しているだけです。これでは何も改善されません。