コーディングのヘルプ - ページ 281 1...274275276277278279280281282283284285286287288...786 新しいコメント FxSteven 2014.05.19 16:27 #2801 mladen: stevenpun 買いは0.1ロット+0.2ロット、売りは0.4ロットでいいと言っていますね。それを明確にすることを気にしますか? こんにちはmladen、返信が遅れて申し訳ありません。 数日前から体調を崩していたためです。 私は絵を作成しました。 例えば、買いが2つのオープンオーダー(0.1Lot + 0.2Lot )を持っているとき、しかし突然列車は売りに変更しました。 eaは0.1ロットで売りを開きますが、私はそれが0.4ロットのために開きたい。 それはそれを修正することは可能ですか? ファイル: lot_explain.jpg 121 kb Mladen Rakic 2014.05.19 16:33 #2802 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ファイルを添付していただけますか? hermes 2014.05.19 17:08 #2803 mladen: エルメス mq4ファイルを添付していただけますか? ここにあります。サンクス ファイル: simpleg.mq4 4 kb 削除済み 2014.05.19 17:27 #2804 こんにちは。 私が作ったEaについて手助けが必要です。それは2つの移動平均と トレンドをフィルターするための2つの異なる時間枠に関連しています。私は取引をフィルターするためにRSI指標を追加したいと思います。例えば、RSI期間8レベル50、クロスでRSIレベル50より高い場合は、売り成行注文のみを開き、クロスでRSIレベル50より低い場合は、買い成行注文のみを開く設定です。Eaを添付しますが、最初はkeltnerchannelsに関連していましたが、今はMa1とMa2としてのみ使用したいのです。 いくつかのボディは、この変更で私を助けることができますか? ありがとうございます。 ファイル: key_of_the_day_1.00.mq4 15 kb Mladen Rakic 2014.05.19 19:00 #2805 hermes: これです。ありがとうございます エルメス これを試してみてください :simpleg_1.mq4 ファイル: simpleg_1.mq4 6 kb Mladen Rakic 2014.05.19 19:25 #2806 daniel1983: こんにちは。私が作ったEaについて助けが必要です。それは2つの移動平均とトレンドをフィルターするための2つの異なるタイムフレームに関連しています。私は取引をフィルターするためにRSI指標を追加したいと思います。例えばRSI期間8のレベル50を設定し、クロスしたときにRSIレベル50より高ければ売り成行注文だけを出し、クロスしたときにRSIレベル50より低ければ買い成行注文だけを出します。Eaを添付しますが、最初はkeltnerchannelsに関連していましたが、今はMa1とMa2としてのみ使用したいです。 いくつかのボディは、この変更で私を助けることができますか? ありがとうございます。 ダニエル1983 masとrsisが同時にクロスすることはないでしょう(つまり、シグナルが出ることはないでしょう)。試しに、あなたが説明したようなことをする簡単なインジケータを作ってみてください。 削除済み 2014.05.19 20:29 #2807 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 hermes 2014.05.20 03:21 #2808 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)," "); } } } } } Coding help MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 アスク! dmnik 2014.05.20 04:48 #2809 不正確な信号 不正確な信号 職人さんたちへもっと良い信号を出してくれませんか。M1、M5、M15 ファイル: binary-alert.rar 10 kb .......png 31 kb Mladen Rakic 2014.05.20 05:01 #2810 DMNIK: 不正確な信号親愛なる、職人あなたはより良い行うに信号を送ることができます。M1、M5、M15 単純に過去3回の終値が過去3回の始値より大きいか小さいかを表示しているだけです。これでは何も改善されません。 1...274275276277278279280281282283284285286287288...786 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
stevenpun 買いは0.1ロット+0.2ロット、売りは0.4ロットでいいと言っていますね。それを明確にすることを気にしますか?
こんにちはmladen、返信が遅れて申し訳ありません。
数日前から体調を崩していたためです。
私は絵を作成しました。
例えば、買いが2つのオープンオーダー(0.1Lot + 0.2Lot )を持っているとき、しかし突然列車は売りに変更しました。
eaは0.1ロットで売りを開きますが、私はそれが0.4ロットのために開きたい。
それはそれを修正することは可能ですか?
あらためてこんにちは。
上記をコメント付きで使ってみましたが、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ファイルを添付していただけますか?
エルメス mq4ファイルを添付していただけますか?
ここにあります。サンクス
こんにちは。
私が作ったEaについて手助けが必要です。それは2つの移動平均と トレンドをフィルターするための2つの異なる時間枠に関連しています。私は取引をフィルターするためにRSI指標を追加したいと思います。例えば、RSI期間8レベル50、クロスでRSIレベル50より高い場合は、売り成行注文のみを開き、クロスでRSIレベル50より低い場合は、買い成行注文のみを開く設定です。Eaを添付しますが、最初はkeltnerchannelsに関連していましたが、今はMa1とMa2としてのみ使用したいのです。
いくつかのボディは、この変更で私を助けることができますか?
ありがとうございます。
これです。ありがとうございます
エルメス
これを試してみてください :simpleg_1.mq4
こんにちは。
私が作ったEaについて助けが必要です。それは2つの移動平均とトレンドをフィルターするための2つの異なるタイムフレームに関連しています。私は取引をフィルターするためにRSI指標を追加したいと思います。例えばRSI期間8のレベル50を設定し、クロスしたときにRSIレベル50より高ければ売り成行注文だけを出し、クロスしたときにRSIレベル50より低ければ買い成行注文だけを出します。Eaを添付しますが、最初はkeltnerchannelsに関連していましたが、今はMa1とMa2としてのみ使用したいです。
いくつかのボディは、この変更で私を助けることができますか?
ありがとうございます。ダニエル1983
masとrsisが同時にクロスすることはないでしょう(つまり、シグナルが出ることはないでしょう)。試しに、あなたが説明したようなことをする簡単なインジケータを作ってみてください。
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以下の売り成行注文があります。この注文は、すべてのシグナルからフィルタリングしたい正しい成行注文です。
これを行うことは可能でしょうか?
ありがとうございました。
ダニエル
エルメス 試してみてください :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
不正確な信号親愛なる、職人あなたはより良い行うに信号を送ることができます。M1、M5、M15
単純に過去3回の終値が過去3回の始値より大きいか小さいかを表示しているだけです。これでは何も改善されません。