コーディングの方法は? - ページ 199 1...192193194195196197198199200201202203204205206...347 新しいコメント crn 2009.08.15 01:03 #1981 V-Force: 私はmq4初心者で、MACDのクロスオーバーがあったときに画面に表示されるようにしようとしています。下記は私のコードですが、アラートは数分おきにポップアップし続けます。 1時間に1回だけアラートが表示されるようにするにはどうしたらよいですか?あるいは、1つのバーに1つのアラートを表示するには? int start() { 文字列 MACD1=""; color colt9; double MACDM_S10 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_MAIN, 0); double MACDS_S10 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_SIGNAL,0); double MACDS_S11 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_MAIN,0); double MACDM_S11 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_MAIN, 1)です。 double MACDS_S11 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_SIGNAL,1)です。 if ((MACDM_S11 < MACDS_S11 && MACDM_S10 < MACDS_S10)) { MACD1="IN UPTREND"; colt9=LimeGreen; } }. if ((MACDM_S11 > MACDS_S11 && MACDM_S10 > MACDS_S10)) { MACD1="IN DOWNTREND"; colt9=Red; }. if ((MACDM_S11 > MACDS_S11 && MACDM_S10 < MACDS_S10)) { MACD1="NEW UP CROSSING"; colt9=LimeGreen; } { (MACDM_S11 && MACDS_S10) { MACD1="NEW UP CROSSING"; colt9=Blue if ((MACDM_S11 MACDS_S10)) { MACD1="NEW DOWN CROSSING"; colt9=Red; } {MACD1="NEW DOWN CROSSING"; colt9=Red 文字列 MACD2=""; colt14を色付けします。 double MACDM_L10 = iCustom(NULL, PERIOD_H1, "MACD", 12,26,9, MODE_MAIN, 0); double MACDS_L10 = iCustom(NULL, PERIOD_H1, "MACD", 12,26,9, MODE_SIGNAL,0)です。 double MACDM_L11 = iCustom(NULL, PERIOD_H1, "MACD", 12,26,9, MODE_MAIN, 1)です。 double MACDS_L11 = iCustom(NULL, PERIOD_H1, "MACD", 12,26,9, MODE_SIGNAL,1)です。 if ((MACDM_L11 < MACDS_L11 && MACDM_L10 < MACDS_L10)) { MACD2="IN UPTREND"; colt14=LimeGreen; } }. if ((MACDM_L11 > MACDS_L11 && MACDM_L10 > MACDS_L10)) { MACD2="IN DOWNTREND"; colt14=Red; }. if ((MACDM_L11 > MACDS_L11 && MACDM_L10 < MACDS_L10)) { MACD2="NEW UP CROSSING"; colt14=LimeGreen; } { MACD2="NEW UP CROSSING"; colt14=LimeGREEN if ((MACDM_L11 MACDS_L10)) { MACD2="NEW DOWN CROSSING"; colt14=Red; }. if(MACD1=="NEW UP CROSSING"&&MACD2=="IN UPTREND") Alert(Symbol()," - ", "H1:"," MACD MAIN UPTREND MOVEMENT"," at ", Bid, " - ",TimeToStr(CurTime(),TIME_SECONDS)); if(MACD1=="NEW DOWN CROSSING"&&MACD2=="IN DOWNTREND") Alert(Symbol()," - ", "H1:"," MACD MAIN DOWNTREND MOVEMENT"," at ", Bid, " - ",TimeToStr(CurTime(),TIME_SECONDS)); if(MACD2=="NEW UP CROSSING"&&MACD1=="IN UPTREND") Alert(Symbol()," - ", "H1:"," MACD, MAIN TREND CHANGE TO UPTREND"," at ", Bid, " - ",TimeToStr(CurTime(),TIME_SECONDS)"); if(MACD2=="NEW DOWN CROSSING"&&MACD1=="IN DOWNTREND") Alert(Symbol()," - ", "H1:"," MACD, MAIN TREND CHANGE TO DOWNTREND"," at ", Bid, " - ",TimeToStr(CurTime(),TIME_SECONDS)"); return(0); } Minute()==1;を条件として使ってみる drhouse7 2009.08.16 11:20 #1982 モディファイのトレンドAlexcud if (MaH11v < MaH1pr1v){H11v = " V "; co11v = Red; u1x5v = 0; d1x5v = 1;} }。 if (MaH11v > MaH1pr1v){H11v = " /̮ "; co11v = Blue; u1x5v = 1; d1x5v = 0;} {H11v = " /̮ "; co11v = Blue; u1x5v = 0;} }。 if (MaH11v == MaH1pr1v){H11v = " 0 "; co11v = Green; u1x5v = 0; d1x5v = 0;} {H11v = " 0 "; co11v = Green; u1x5v = 0; d1x5v = 0;} }。 トレンドアレキを改造しようとしています。 0 "の3つのシグナルではなく、2つのシグナルを上下させたいのです。 そうすれば、より正確な計算ができます。 何かアイデアはありますか? ファイル: trend_alexcud.mq4 22 kb lumanauw 2009.08.16 15:09 #1983 このプログラミングの行を理解するのを誰か助けてくれませんか?簡単に言うと バーが終了した後にEAが何かを開始することです。 コードは次のようなものです。 datetime timeprev=0; // 終了したバーごとに一度だけ実行する if(timeprev==Time[0]) return(0); timeprev = Time[0]です。 MQ4のマニュアルを見ると、Time[0]はバー[0]のオープン タイムを抽出するためのものです。1970年1月1日からの秒数で記載されています。 この仕組みがよくわかりません。最初に「timeprev=0」とあります。 そして次の行「if (timeprev==Time[0]) return(0)」です。 このときのTime[0]の値は何なのでしょうか?どうして0(timeprevの値)になるのでしょうか? 次の行は、"timeprev=Time[0]"です。 どうしてこの行は、バーが終了するまでEAが何もしないようにしているのでしょうか? Jason 2009.08.16 19:24 #1984 crn: USE Minute()==1;を条件にしてみてください。 これでも各バーの最初の1分間に各ティックが設定されます。これでかなり数は減るかもしれませんが、それでも複数回警告が出ることに変わりはありません。 一番良いのは、グローバル変数(またはオブジェクト)を設定し、それを最後のバーのTime[]に設定することです。 if (Time[0]!=lastTime) { ... alert, whatever... lastTime=Time[0]; } Jason 2009.08.16 19:28 #1985 Jorged23: こんにちは。 OrderModifyのエラー1:変更前のデータが違うことを制御しようとしても、常に表示されるのが避けられませんdoublelenormalizeも試したのですが、うまくいきません...。これはコードです。if (Bid-OrderOpenPrice() >= VPoint*BreakEvenAtProfit){if (OrderStopLoss() != OrderOpenPrice() + BreakEvenShift*VPoint){Vresult = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+ BreakEvenShift*VPoint,OrderTakeProfit(),0,Green).Vresult = OrderTicket(),OrderOpenPrice(),OrderOpenPrice() + BreakEvenShift*VPoint.0,Green);何か提案はありますか? ありがとうございます。 クイックチェック...ブレイクイーブンの距離を短く設定しすぎていないか確認してください。MarketInfo(Symbol(),MODE_STOPLEVEL) と比較して、十分な大きさであることを確認します。 VPointの目的は何ですか?この数値が間違っていると、物事がめちゃくちゃになります。"Point "単体では常に正しい値になります。もし、この数値がずれていたら、それは間違いなく問題を引き起こしている可能性があります。つまり、POINTが実際の値よりも誤って0または小さくなっているのです。 SPACECHIMP 2009.08.17 19:00 #1986 SIMPLEコーディングの質問 OrderSelect(5555, SELECT_BY_TICKET); RefreshRates(); if (Ask >= (OrderOpenPrice()+ (5 * Point)) && OrderLots() == 2 && (OrderType() == OP_BUY)){ オーダークローズ(5555,1,アスク,10,赤); } {オーダークローズ(5555) if (Bid <= (OrderOpenPrice()- (5 * Point)) && OrderLots() == 2 && (OrderType() == OP_SELL)){ OrderClose(5555,1,Bid,10,Blue); }. まだ勉強中ですが...。 この場合、建値から 5ピップス離れたら半分(2ロット→1ロット)決済するような使い方ができるでしょうか? ありがとうございます!!!! How to code? 10ポイント 3.mq4 コーディングのヘルプ luxinterior 2009.08.17 23:45 #1987 見た目はだいたい合ってる。ちょっとごちゃごちゃしてますが。実際に何を実現したいかによって、OrderProfitを使うこともできます。 ラックス PS: 小数点以下5桁のブローカーに注意することを言い忘れました。すべて10倍する必要があるので、あなたの例では5が50になります。幸運を祈ります。 SPACECHIMP 2009.08.18 04:28 #1988 luxinterior: だいたい合っているようです。でも、ちょっと面倒ですね。実際に何をしたいのかによって、OrderProfitを使うこともできます。 ラックス PS: 小数点以下5桁のブローカーに注意することを言い忘れた。すべて10倍する必要があるので、あなたの例では5が50になります。幸運を祈ります。 LUXさん、ありがとうございます。 問題は、デバッグのためにウィンザーダイレクトの1分足のGBP/USDチャート で動かしているのですが、5pipsになると1ロットも閉じないので、何がどうなっているのかわかりません。 ALSOです。 私は買いを閉じてすぐに売りを開こうとしているのですが、これもうまくいきません。 それは動作し、それがない.... 私はこれがプログラミングに非常に簡単であることを望む if (***************) { RefreshRates(); OrderSelect(5555,SELECT_BY_TICKET); if (OrdersTotal() > 0 && OrderType()==OP_BUY){OrderClose(5555, OrderLots(), Bid, Slippage, MediumSeaGreen); if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");}; }. Sleep(1500); RefreshRates(); if (オーダートータル() ==0)チケット = OrderSend(Symbol(), OP_SELL, Lots, Bid, 10, 0, 0, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink)。 if(Ticket<0)Print("OrderSend failed with error #",GetLastError()); } How to code? QUICK partial closing programming アスク! newcoder 2009.08.22 02:02 #1989 インジケーターのデバッグ 私はこの言語の初心者で、インジケータを書こうとしています。デバッガがないため、困っています。Print()を使ってみましたが、何も出力されません。Alert()を使用すると、バッファ[1]の出力としてZEROが表示されます。どなたか説明してください。どうすれば、Print()とAlert()を使って、すべてのZEROを得ることなくデバッグできるのでしょうか? もし、どなたかアイデアがあれば、教えてください。どうもありがとうございました。 tigger.longtail@gmail.com ExtMapBuffer1 = iMA(NULL,0,ExtParam1,0,MODE_EMA,PRICE_CLOSE,i); ExtMapBuffer2 = iMA(NULL,0,ExtParam2,0,MODE_EMA,PRICE_CLOSE,i); ExtMapBuffer2 = iMA(NULL,0,MODE_EMA,PRICE_CLOSE,i); CurrentBar = Time; if( ExtMapBuffer1 >= ExtMapBuffer2 && CurrentBar == Time && Flag == 0) { Alert("ExtMapBuffer1 =", ExtMapBuffer1," Short is Above.",Hour()," Minute ",Minute()); Alert("ExtMapBuffer2 =", ExtMapBuffer2," Short is Above.",Hour()," Minute ",Minute()); Print("ExtMapBuffer1 = ", ExtMapBuffer1); Print("ExtMapBuffer2 = ", ExtMapBuffer2); Print("ExtMapBuffer2 = ", ExtMapBuffer2); How to code? Programming Question from a Alerts drhouse7 2009.08.22 11:11 #1990 如何せん 1...192193194195196197198199200201202203204205206...347 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
私はmq4初心者で、MACDのクロスオーバーがあったときに画面に表示されるようにしようとしています。下記は私のコードですが、アラートは数分おきにポップアップし続けます。
1時間に1回だけアラートが表示されるようにするにはどうしたらよいですか?あるいは、1つのバーに1つのアラートを表示するには?
int start()
{
文字列 MACD1="";
color colt9;
double MACDM_S10 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_MAIN, 0);
double MACDS_S10 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_SIGNAL,0); double MACDS_S11 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_MAIN,0);
double MACDM_S11 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_MAIN, 1)です。
double MACDS_S11 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_SIGNAL,1)です。
if ((MACDM_S11 < MACDS_S11 && MACDM_S10 < MACDS_S10)) { MACD1="IN UPTREND"; colt9=LimeGreen; } }.
if ((MACDM_S11 > MACDS_S11 && MACDM_S10 > MACDS_S10)) { MACD1="IN DOWNTREND"; colt9=Red; }.
if ((MACDM_S11 > MACDS_S11 && MACDM_S10 < MACDS_S10)) { MACD1="NEW UP CROSSING"; colt9=LimeGreen; } { (MACDM_S11 && MACDS_S10) { MACD1="NEW UP CROSSING"; colt9=Blue
if ((MACDM_S11 MACDS_S10)) { MACD1="NEW DOWN CROSSING"; colt9=Red; } {MACD1="NEW DOWN CROSSING"; colt9=Red
文字列 MACD2="";
colt14を色付けします。
double MACDM_L10 = iCustom(NULL, PERIOD_H1, "MACD", 12,26,9, MODE_MAIN, 0);
double MACDS_L10 = iCustom(NULL, PERIOD_H1, "MACD", 12,26,9, MODE_SIGNAL,0)です。
double MACDM_L11 = iCustom(NULL, PERIOD_H1, "MACD", 12,26,9, MODE_MAIN, 1)です。
double MACDS_L11 = iCustom(NULL, PERIOD_H1, "MACD", 12,26,9, MODE_SIGNAL,1)です。
if ((MACDM_L11 < MACDS_L11 && MACDM_L10 < MACDS_L10)) { MACD2="IN UPTREND"; colt14=LimeGreen; } }.
if ((MACDM_L11 > MACDS_L11 && MACDM_L10 > MACDS_L10)) { MACD2="IN DOWNTREND"; colt14=Red; }.
if ((MACDM_L11 > MACDS_L11 && MACDM_L10 < MACDS_L10)) { MACD2="NEW UP CROSSING"; colt14=LimeGreen; } { MACD2="NEW UP CROSSING"; colt14=LimeGREEN
if ((MACDM_L11 MACDS_L10)) { MACD2="NEW DOWN CROSSING"; colt14=Red; }.
if(MACD1=="NEW UP CROSSING"&&MACD2=="IN UPTREND")
Alert(Symbol()," - ", "H1:"," MACD MAIN UPTREND MOVEMENT"," at ", Bid, " - ",TimeToStr(CurTime(),TIME_SECONDS));
if(MACD1=="NEW DOWN CROSSING"&&MACD2=="IN DOWNTREND")
Alert(Symbol()," - ", "H1:"," MACD MAIN DOWNTREND MOVEMENT"," at ", Bid, " - ",TimeToStr(CurTime(),TIME_SECONDS));
if(MACD2=="NEW UP CROSSING"&&MACD1=="IN UPTREND")
Alert(Symbol()," - ", "H1:"," MACD, MAIN TREND CHANGE TO UPTREND"," at ", Bid, " - ",TimeToStr(CurTime(),TIME_SECONDS)");
if(MACD2=="NEW DOWN CROSSING"&&MACD1=="IN DOWNTREND")
Alert(Symbol()," - ", "H1:"," MACD, MAIN TREND CHANGE TO DOWNTREND"," at ", Bid, " - ",TimeToStr(CurTime(),TIME_SECONDS)");
return(0);
}Minute()==1;を条件として使ってみる
モディファイのトレンドAlexcud
if (MaH11v < MaH1pr1v){H11v = " V "; co11v = Red; u1x5v = 0; d1x5v = 1;} }。
if (MaH11v > MaH1pr1v){H11v = " /̮ "; co11v = Blue; u1x5v = 1; d1x5v = 0;} {H11v = " /̮ "; co11v = Blue; u1x5v = 0;} }。
if (MaH11v == MaH1pr1v){H11v = " 0 "; co11v = Green; u1x5v = 0; d1x5v = 0;} {H11v = " 0 "; co11v = Green; u1x5v = 0; d1x5v = 0;} }。
トレンドアレキを改造しようとしています。
0 "の3つのシグナルではなく、2つのシグナルを上下させたいのです。
そうすれば、より正確な計算ができます。
何かアイデアはありますか?
このプログラミングの行を理解するのを誰か助けてくれませんか?簡単に言うと
バーが終了した後にEAが何かを開始することです。
コードは次のようなものです。
datetime timeprev=0;
// 終了したバーごとに一度だけ実行する
if(timeprev==Time[0]) return(0);
timeprev = Time[0]です。
MQ4のマニュアルを見ると、Time[0]はバー[0]のオープン タイムを抽出するためのものです。1970年1月1日からの秒数で記載されています。
この仕組みがよくわかりません。最初に「timeprev=0」とあります。
そして次の行「if (timeprev==Time[0]) return(0)」です。
このときのTime[0]の値は何なのでしょうか?どうして0(timeprevの値)になるのでしょうか?
次の行は、"timeprev=Time[0]"です。
どうしてこの行は、バーが終了するまでEAが何もしないようにしているのでしょうか?
USE Minute()==1;を条件にしてみてください。
これでも各バーの最初の1分間に各ティックが設定されます。これでかなり数は減るかもしれませんが、それでも複数回警告が出ることに変わりはありません。
一番良いのは、グローバル変数(またはオブジェクト)を設定し、それを最後のバーのTime[]に設定することです。
if (Time[0]!=lastTime) {
... alert, whatever...
lastTime=Time[0];
}
こんにちは。
OrderModifyのエラー1:変更前のデータが違うことを制御しようとしても、常に表示されるのが避けられませんdoublelenormalizeも試したのですが、うまくいきません...。
これはコードです。
if (Bid-OrderOpenPrice() >= VPoint*BreakEvenAtProfit)
{
if (OrderStopLoss() != OrderOpenPrice() + BreakEvenShift*VPoint)
{
Vresult = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+ BreakEvenShift*VPoint,OrderTakeProfit(),0,Green).Vresult = OrderTicket(),OrderOpenPrice(),OrderOpenPrice() + BreakEvenShift*VPoint.0,Green);
何か提案はありますか?
ありがとうございます。クイックチェック...ブレイクイーブンの距離を短く設定しすぎていないか確認してください。MarketInfo(Symbol(),MODE_STOPLEVEL) と比較して、十分な大きさであることを確認します。
VPointの目的は何ですか?この数値が間違っていると、物事がめちゃくちゃになります。"Point "単体では常に正しい値になります。もし、この数値がずれていたら、それは間違いなく問題を引き起こしている可能性があります。つまり、POINTが実際の値よりも誤って0または小さくなっているのです。
SIMPLEコーディングの質問
OrderSelect(5555, SELECT_BY_TICKET);
RefreshRates();
if (Ask >= (OrderOpenPrice()+ (5 * Point)) && OrderLots() == 2 && (OrderType() == OP_BUY)){
オーダークローズ(5555,1,アスク,10,赤); } {オーダークローズ(5555)
if (Bid <= (OrderOpenPrice()- (5 * Point)) && OrderLots() == 2 && (OrderType() == OP_SELL)){
OrderClose(5555,1,Bid,10,Blue); }.
まだ勉強中ですが...。
この場合、建値から 5ピップス離れたら半分(2ロット→1ロット)決済するような使い方ができるでしょうか?
ありがとうございます!!!!
見た目はだいたい合ってる。ちょっとごちゃごちゃしてますが。実際に何を実現したいかによって、OrderProfitを使うこともできます。
ラックス
PS: 小数点以下5桁のブローカーに注意することを言い忘れました。すべて10倍する必要があるので、あなたの例では5が50になります。幸運を祈ります。
だいたい合っているようです。でも、ちょっと面倒ですね。実際に何をしたいのかによって、OrderProfitを使うこともできます。
ラックス
PS: 小数点以下5桁のブローカーに注意することを言い忘れた。すべて10倍する必要があるので、あなたの例では5が50になります。幸運を祈ります。LUXさん、ありがとうございます。
問題は、デバッグのためにウィンザーダイレクトの1分足のGBP/USDチャート で動かしているのですが、5pipsになると1ロットも閉じないので、何がどうなっているのかわかりません。
ALSOです。
私は買いを閉じてすぐに売りを開こうとしているのですが、これもうまくいきません。
それは動作し、それがない....
私はこれがプログラミングに非常に簡単であることを望む
if (***************) {
RefreshRates();
OrderSelect(5555,SELECT_BY_TICKET);
if (OrdersTotal() > 0 && OrderType()==OP_BUY){OrderClose(5555, OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");}; }.
Sleep(1500);
RefreshRates();
if (オーダートータル() ==0)チケット = OrderSend(Symbol(), OP_SELL, Lots, Bid, 10, 0, 0, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink)。
if(Ticket<0)Print("OrderSend failed with error #",GetLastError());
}
インジケーターのデバッグ
私はこの言語の初心者で、インジケータを書こうとしています。デバッガがないため、困っています。Print()を使ってみましたが、何も出力されません。Alert()を使用すると、バッファ[1]の出力としてZEROが表示されます。どなたか説明してください。どうすれば、Print()とAlert()を使って、すべてのZEROを得ることなくデバッグできるのでしょうか? もし、どなたかアイデアがあれば、教えてください。どうもありがとうございました。
tigger.longtail@gmail.com
ExtMapBuffer1 = iMA(NULL,0,ExtParam1,0,MODE_EMA,PRICE_CLOSE,i);
ExtMapBuffer2 = iMA(NULL,0,ExtParam2,0,MODE_EMA,PRICE_CLOSE,i); ExtMapBuffer2 = iMA(NULL,0,MODE_EMA,PRICE_CLOSE,i);
CurrentBar = Time;
if( ExtMapBuffer1 >= ExtMapBuffer2 && CurrentBar == Time && Flag == 0)
{
Alert("ExtMapBuffer1 =", ExtMapBuffer1," Short is Above.",Hour()," Minute ",Minute());
Alert("ExtMapBuffer2 =", ExtMapBuffer2," Short is Above.",Hour()," Minute ",Minute());
Print("ExtMapBuffer1 = ", ExtMapBuffer1);
Print("ExtMapBuffer2 = ", ExtMapBuffer2); Print("ExtMapBuffer2 = ", ExtMapBuffer2);
如何せん