アスク! - ページ 174 1...167168169170171172173174175176177178179180181182 新しいコメント ERAN123 2013.01.14 17:49 #1731 インジケータコードに関する質問------(3行) 1.なぜマークされた2つの関数が deinitにあるのですか? 2.なぜマークされた行に720の値があるのでしょうか? コードです。 //+------------------------------------------------------------------+ //| DailyBreakout.mq4 | //| Copyright © 2008, Robert Hill. | //+------------------------------------------------------------------+ #property copyright "Copyright © 2008, Robert Hill" #property link "NONE" #property indicator_chart_window //---- input parameters extern bool Alerts = false; extern int GMTshift = 0; extern int LabelShift = 20; extern int LineShift = 40; extern string pd = "PipsAboveBelowSR for Alert"; extern int PipDistance = 1; extern color StandardFontColor = White; extern int StandardFontSize = 8; extern color SupportColor = Red; extern color ResistanceColor = Lime; datetime LabelShiftTime, LineShiftTime; double yesterday_high=0; double yesterday_low=0; double LastHigh,LastLow,x; double R1=0; double S1=0; bool firstS1=true; bool firstR1=true; double myPoint; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators myPoint = SetPoint(Symbol()); //---- return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- TODO: add your code here //---- ObjectDelete("R1 Label"); ObjectDelete("R1 Line"); ObjectDelete("S1 Label"); ObjectDelete("S1 Line"); return(0); } double SetPoint(string mySymbol)// <<<<<<<-----why here on the deinit?????---------------- { double mPoint, myDigits; myDigits = MarketInfo (mySymbol, MODE_DIGITS); if (myDigits < 4) mPoint = 0.01; else mPoint = 0.0001; return(mPoint); } int DoAlerts()//<<<<<<<<<-------why here on the deint??????----------------- { double DifAboveR1,PipsLimit; double DifBelowS1; DifBelowS1 = S1 - Close[0]; DifAboveR1 = Close[0] - R1; PipsLimit = PipDistance * myPoint; if (DifBelowS1 > PipsLimit) firstS1 = true; if (DifBelowS1 0) { if (firstS1) { Alert("Below S1 Line by ",DifBelowS1, " for ", Symbol(),"-",Period()); PlaySound("alert.wav"); firstS1=false; } } if (DifAboveR1 > PipsLimit) firstR1 = true; if (DifAboveR1 0) { if (firstR1) { Alert("Above R1 Line by ",DifAboveR1," for ", Symbol(),"-",Period()); Sleep(2000); PlaySound("timeout.wav"); firstR1=false; } } } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); //---- TODO: add your code here double day_high=0; double day_low=0; double yesterday_open=0; double today_open=0; double cur_day=0; double prev_day=0; int cnt=720;//<<<<<----why 720 ????????-------------------------------------------------- //---- exit if period is greater than 4 hr charts if(Period() > 240) { Print("Error - Chart period is greater than 4 hr."); return(-1); // then exit } //---- Get new daily prices & calculate pivots cur_day=0; prev_day=0; //---- Get new daily prices & calculate pivots while (cnt!= 0) { cur_day = TimeDay(Time[cnt]- (GMTshift*3600)); if (prev_day != cur_day) { yesterday_high = day_high; yesterday_low = day_low; day_high = High[cnt]; day_low = Low[cnt]; prev_day = cur_day; } if (High[cnt]>day_high) { day_high = High[cnt]; } if (Low[cnt]<day_low) { day_low = Low[cnt]; } cnt--; } S1 = yesterday_low; R1 = yesterday_high; LabelShiftTime = Time[LabelShift]; LineShiftTime = Time[LineShift]; //---- Set line labels on chart window DisplayLabel("R1 label", "R1", R1, StandardFontSize, StandardFontColor); DisplayLabel("S1 label", "S1", S1, StandardFontSize, StandardFontColor); //--- Draw Pivot lines on chart DisplayLine("S1 line", S1, 0, STYLE_DASHDOTDOT, SupportColor); DisplayLine("R1 line", R1, 0, STYLE_DASHDOTDOT, ResistanceColor); //---- done // Now check for Alert if (Alerts) DoAlerts(); //---- return(0); } //---- Set line labels on chart window void DisplayLabel(string LabelName, string LabelText, double LabelPos, int LabelFontSize, color LabelColor) { if(ObjectFind(LabelName) != 0) { ObjectCreate(LabelName, OBJ_TEXT, 0, LabelShiftTime, LabelPos); ObjectSetText(LabelName, LabelText, LabelFontSize, "Arial", LabelColor); } else { ObjectMove(LabelName, 0, LabelShiftTime, LabelPos); } } //--- Draw Pivot lines on chart void DisplayLine(string LineName, double LinePos, int LineWidth, int LineStyle, color LineColor) { if(ObjectFind(LineName) != 0) { ObjectCreate(LineName, OBJ_HLINE, 0, LineShiftTime, LinePos); ObjectSet(LineName, OBJPROP_STYLE, LineStyle); ObjectSet(LineName, OBJPROP_COLOR, LineColor); if (LineWidth > 0) ObjectSet(LineName, OBJPROP_WIDTH, LineWidth); } else { ObjectMove(LineName, 0, LineShiftTime, LinePos); } } //+------------------------------------------------------------------+ 略奪に感謝します。 Ask! Small Problem to Fix Pivot Point Code Help Mladen Rakic 2013.01.14 18:45 #1732 ERAN123 1.deinit() の中ではなく、deinit() のすぐ後ろ (deinit() と start() の間) にあるのです。 mqlでは、プロシージャや関数の 書き方に順番は必要ありません。init()を最後に書いても問題ありません。)余談ですが、mqlでは関数やプロシージャを入れ子にすることができないので、他の関数やプロシージャのボディの中に入れることはできません。) 2.各ティックで720本のバーを計算するように修正されました。なぜですか?それは作者に聞くべきでしょう。 ERAN123: 1.なぜマークされた2つの関数がdeinitの中にあるのでしょうか?2.なぜマークされた行に720の値があるのですか? コードです。 //+------------------------------------------------------------------+ //| DailyBreakout.mq4 | //| Copyright © 2008, Robert Hill. | //+------------------------------------------------------------------+ #property copyright "Copyright © 2008, Robert Hill" #property link "NONE" #property indicator_chart_window //---- input parameters extern bool Alerts = false; extern int GMTshift = 0; extern int LabelShift = 20; extern int LineShift = 40; extern string pd = "PipsAboveBelowSR for Alert"; extern int PipDistance = 1; extern color StandardFontColor = White; extern int StandardFontSize = 8; extern color SupportColor = Red; extern color ResistanceColor = Lime; datetime LabelShiftTime, LineShiftTime; double yesterday_high=0; double yesterday_low=0; double LastHigh,LastLow,x; double R1=0; double S1=0; bool firstS1=true; bool firstR1=true; double myPoint; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators myPoint = SetPoint(Symbol()); //---- return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- TODO: add your code here //---- ObjectDelete("R1 Label"); ObjectDelete("R1 Line"); ObjectDelete("S1 Label"); ObjectDelete("S1 Line"); return(0); } double SetPoint(string mySymbol)// <<<<<<<-----why here on the deinit?????---------------- { double mPoint, myDigits; myDigits = MarketInfo (mySymbol, MODE_DIGITS); if (myDigits < 4) mPoint = 0.01; else mPoint = 0.0001; return(mPoint); } int DoAlerts()//<<<<<<<<<-------why here on the deint??????----------------- { double DifAboveR1,PipsLimit; double DifBelowS1; DifBelowS1 = S1 - Close[0]; DifAboveR1 = Close[0] - R1; PipsLimit = PipDistance * myPoint; if (DifBelowS1 > PipsLimit) firstS1 = true; if (DifBelowS1 0) { if (firstS1) { Alert("Below S1 Line by ",DifBelowS1, " for ", Symbol(),"-",Period()); PlaySound("alert.wav"); firstS1=false; } } if (DifAboveR1 > PipsLimit) firstR1 = true; if (DifAboveR1 0) { if (firstR1) { Alert("Above R1 Line by ",DifAboveR1," for ", Symbol(),"-",Period()); Sleep(2000); PlaySound("timeout.wav"); firstR1=false; } } } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); //---- TODO: add your code here double day_high=0; double day_low=0; double yesterday_open=0; double today_open=0; double cur_day=0; double prev_day=0; int cnt=720;//<<<<<----why 720 ????????-------------------------------------------------- //---- exit if period is greater than 4 hr charts if(Period() > 240) { Print("Error - Chart period is greater than 4 hr."); return(-1); // then exit } //---- Get new daily prices & calculate pivots cur_day=0; prev_day=0; //---- Get new daily prices & calculate pivots while (cnt!= 0) { cur_day = TimeDay(Time[cnt]- (GMTshift*3600)); if (prev_day != cur_day) { yesterday_high = day_high; yesterday_low = day_low; day_high = High[cnt]; day_low = Low[cnt]; prev_day = cur_day; } if (High[cnt]>day_high) { day_high = High[cnt]; } if (Low[cnt]<day_low) { day_low = Low[cnt]; } cnt--; } S1 = yesterday_low; R1 = yesterday_high; LabelShiftTime = Time[LabelShift]; LineShiftTime = Time[LineShift]; //---- Set line labels on chart window DisplayLabel("R1 label", "R1", R1, StandardFontSize, StandardFontColor); DisplayLabel("S1 label", "S1", S1, StandardFontSize, StandardFontColor); //--- Draw Pivot lines on chart DisplayLine("S1 line", S1, 0, STYLE_DASHDOTDOT, SupportColor); DisplayLine("R1 line", R1, 0, STYLE_DASHDOTDOT, ResistanceColor); //---- done // Now check for Alert if (Alerts) DoAlerts(); //---- return(0); } //---- Set line labels on chart window void DisplayLabel(string LabelName, string LabelText, double LabelPos, int LabelFontSize, color LabelColor) { if(ObjectFind(LabelName) != 0) { ObjectCreate(LabelName, OBJ_TEXT, 0, LabelShiftTime, LabelPos); ObjectSetText(LabelName, LabelText, LabelFontSize, "Arial", LabelColor); } else { ObjectMove(LabelName, 0, LabelShiftTime, LabelPos); } } //--- Draw Pivot lines on chart void DisplayLine(string LineName, double LinePos, int LineWidth, int LineStyle, color LineColor) { if(ObjectFind(LineName) != 0) { ObjectCreate(LineName, OBJ_HLINE, 0, LineShiftTime, LinePos); ObjectSet(LineName, OBJPROP_STYLE, LineStyle); ObjectSet(LineName, OBJPROP_COLOR, LineColor); if (LineWidth > 0) ObjectSet(LineName, OBJPROP_WIDTH, LineWidth); } else { ObjectMove(LineName, 0, LineShiftTime, LinePos); } } //+------------------------------------------------------------------+ 戦利品に感謝します。 ERAN123 2013.01.14 19:03 #1733 mladenさん、こんにちは。 リプレイありがとうございました。 1.これだけ気づきました(これだけ気づかずにミストしてました) 2.その本当の謎 ERAN123 2013.01.18 16:36 #1734 保留中の注文は ライトな助けを必要としています!!!!!!!!!! こんにちは。 保留中の注文について質問です。 私は2つの保留中の注文を持っている 買いと販売 それらのうちの1つがヒットした私は、他のを閉じるために何を。 私はちょうど初心者mqlのプログラマとその私の能力を超えて、今です。 どのような方向性の友人? 多くの感謝。 Mladen Rakic 2013.01.18 19:18 #1735 このようなものが使用できます。 void CleanPendingOrders() { bool trade.BuyEntered = false; bool trade.SellEntered = false; for (int i=OrdersTotal()-1; i>=0; i--) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); // // // // // if ( OrderSymbol()==trade.symbol && OrderMagicNumber()==MagicNumber ) { int type = OrderType(); if (type==OP_BUY && !trade.ByEntered) trade.BuyEntered = true; if (type==OP_SELL && !trade.SellEntered) trade.SellEntered = true; if (type >OP_SELL && (trade.ByEntered || trade.BuyEntered)) OrderDelete(OrderTicket()); } } } 同じマジックナンバーとシンボルを持つ通常の注文が見つかれば、保留中の注文を 削除します。 ERAN123: こんにちは友人保留中の注文について質問があります。 私は2つの保留中の注文を持っている 買いと販売 それらのうちの1つがヒットしたら、私は他のを閉じるにはどうすればよいですか。 私はちょうど初心者mqlのプログラマとその私の能力を超えて、今です。 どのような方向性の友人? どうもありがとう EAが複数のペアで実行されない、助けが必要 コーディングヘルプ...アラートの代わりにインジケータをフィルタリングする方法を教えてください。 MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 ERAN123 2013.01.18 21:09 #1736 mladen ありがとうございます、確認して みます。 ありがとうございました。 Mladen Rakic 2013.01.19 07:22 #1737 問題なく動作するはずです 良い週末をお過ごしください。 ERAN123: mladenありがとうございます、確認します。 ありがとうございました qwertet 2013.02.04 16:08 #1738 トレーダー仲間の皆さん、こんにちは。 私はmql4でプログラミングしようとしている戦略で数ヶ月間取引しています。 私は次のようなテイクプロフィット 付きの注文を実行します。 "OrderSend(Symbol(),OP_BUY,lots,Ask,10,30,Ask+takeprofit,「テスト」, 12345, 0, Green);" さて、この注文がクローズしたら(t/pまたはs/l)、また同じ注文を出したい。 "OrderSend(Symbol(), OP_BUY, lots, Ask, 10, 30, Ask+takeprofit, "test", 12345, 0, Green);" とします。 といった具合に、前の買いが決済されるたびに買いポジションを導入するようにしています。 数日前からmql4の勉強を始めたのですが、この件で行き詰まっています。よろしくお願いします。 Mladen Rakic 2013.02.04 17:06 #1739 現在開いている注文(買い注文でも売り注文でも)の数を単純に数えて、それが0になったら新しいポジションを開いたらどうでしょう? qwertet: トレーダー仲間の皆さん、こんにちは。私はmql4でプログラムしようとしている戦略で数ヶ月間取引しています。 私は次のようなテイクプロフィット付きの注文を実行します。 "OrderSend(Symbol(),OP_BUY,lots,Ask,10,30,Ask+takeprofit,「テスト」, 12345, 0, Green);" さて、この注文がクローズしたら(t/pまたはs/l)、また同じ注文を出したい。 "OrderSend(Symbol(), OP_BUY, lots, Ask, 10, 30, Ask+takeprofit, "test", 12345, 0, Green);" とします。 というように、前の買いが決済されるたびに、買いポジションを導入するようにします。 数日前からmql4の勉強を始めたのですが、この件で行き詰っています。助けてください。 Kale 2013.02.04 19:07 #1740 qwertet: というように、前の買いが終了するたびに買いポジションを導入します。 数日前からmql4の勉強を始めたのですが、この件で行き詰まっています。助けてください! MLadenさんのおっしゃるとおり、注文をカウントして、新しい注文の準備ができたかどうかをチェックする必要があります。 この関数を使うといいかもしれません。 これは、指定したマジックナンバーと 注文タイプで選択された注文のうち、いくつがすでにオープンされているかをカウントします。 注文タイプに -1 を指定すると、選択したマジックナンバーですべての注文をカウントします。 お楽しみください。 int orderCount(int type,int magic) { int oc = 0; for(int cnt = 0 ;cnt<OrdersTotal();cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderMagicNumber() == magic && (OrderType() == type || type == -1)) oc+=1; } return(oc); } 1...167168169170171172173174175176177178179180181182 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
インジケータコードに関する質問------(3行)
1.なぜマークされた2つの関数が deinitにあるのですか?
2.なぜマークされた行に720の値があるのでしょうか?
コードです。
//| DailyBreakout.mq4 |
//| Copyright © 2008, Robert Hill. |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, Robert Hill"
#property link "NONE"
#property indicator_chart_window
//---- input parameters
extern bool Alerts = false;
extern int GMTshift = 0;
extern int LabelShift = 20;
extern int LineShift = 40;
extern string pd = "PipsAboveBelowSR for Alert";
extern int PipDistance = 1;
extern color StandardFontColor = White;
extern int StandardFontSize = 8;
extern color SupportColor = Red;
extern color ResistanceColor = Lime;
datetime LabelShiftTime, LineShiftTime;
double yesterday_high=0;
double yesterday_low=0;
double LastHigh,LastLow,x;
double R1=0;
double S1=0;
bool firstS1=true;
bool firstR1=true;
double myPoint;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
myPoint = SetPoint(Symbol());
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//---- TODO: add your code here
//----
ObjectDelete("R1 Label");
ObjectDelete("R1 Line");
ObjectDelete("S1 Label");
ObjectDelete("S1 Line");
return(0);
}
double SetPoint(string mySymbol)// <<<<<<<-----why here on the deinit?????----------------
{
double mPoint, myDigits;
myDigits = MarketInfo (mySymbol, MODE_DIGITS);
if (myDigits < 4)
mPoint = 0.01;
else
mPoint = 0.0001;
return(mPoint);
}
int DoAlerts()//<<<<<<<<<-------why here on the deint??????-----------------
{
double DifAboveR1,PipsLimit;
double DifBelowS1;
DifBelowS1 = S1 - Close[0];
DifAboveR1 = Close[0] - R1;
PipsLimit = PipDistance * myPoint;
if (DifBelowS1 > PipsLimit) firstS1 = true;
if (DifBelowS1 0)
{
if (firstS1)
{
Alert("Below S1 Line by ",DifBelowS1, " for ", Symbol(),"-",Period());
PlaySound("alert.wav");
firstS1=false;
}
}
if (DifAboveR1 > PipsLimit) firstR1 = true;
if (DifAboveR1 0)
{
if (firstR1)
{
Alert("Above R1 Line by ",DifAboveR1," for ", Symbol(),"-",Period());
Sleep(2000);
PlaySound("timeout.wav");
firstR1=false;
}
}
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
//---- TODO: add your code here
double day_high=0;
double day_low=0;
double yesterday_open=0;
double today_open=0;
double cur_day=0;
double prev_day=0;
int cnt=720;//<<<<<----why 720 ????????--------------------------------------------------
//---- exit if period is greater than 4 hr charts
if(Period() > 240)
{
Print("Error - Chart period is greater than 4 hr.");
return(-1); // then exit
}
//---- Get new daily prices & calculate pivots
cur_day=0;
prev_day=0;
//---- Get new daily prices & calculate pivots
while (cnt!= 0)
{
cur_day = TimeDay(Time[cnt]- (GMTshift*3600));
if (prev_day != cur_day)
{
yesterday_high = day_high;
yesterday_low = day_low;
day_high = High[cnt];
day_low = Low[cnt];
prev_day = cur_day;
}
if (High[cnt]>day_high)
{
day_high = High[cnt];
}
if (Low[cnt]<day_low)
{
day_low = Low[cnt];
}
cnt--;
}
S1 = yesterday_low;
R1 = yesterday_high;
LabelShiftTime = Time[LabelShift];
LineShiftTime = Time[LineShift];
//---- Set line labels on chart window
DisplayLabel("R1 label", "R1", R1, StandardFontSize, StandardFontColor);
DisplayLabel("S1 label", "S1", S1, StandardFontSize, StandardFontColor);
//--- Draw Pivot lines on chart
DisplayLine("S1 line", S1, 0, STYLE_DASHDOTDOT, SupportColor);
DisplayLine("R1 line", R1, 0, STYLE_DASHDOTDOT, ResistanceColor);
//---- done
// Now check for Alert
if (Alerts) DoAlerts();
//----
return(0);
}
//---- Set line labels on chart window
void DisplayLabel(string LabelName, string LabelText, double LabelPos, int LabelFontSize, color LabelColor)
{
if(ObjectFind(LabelName) != 0)
{
ObjectCreate(LabelName, OBJ_TEXT, 0, LabelShiftTime, LabelPos);
ObjectSetText(LabelName, LabelText, LabelFontSize, "Arial", LabelColor);
}
else
{
ObjectMove(LabelName, 0, LabelShiftTime, LabelPos);
}
}
//--- Draw Pivot lines on chart
void DisplayLine(string LineName, double LinePos, int LineWidth, int LineStyle, color LineColor)
{
if(ObjectFind(LineName) != 0)
{
ObjectCreate(LineName, OBJ_HLINE, 0, LineShiftTime, LinePos);
ObjectSet(LineName, OBJPROP_STYLE, LineStyle);
ObjectSet(LineName, OBJPROP_COLOR, LineColor);
if (LineWidth > 0) ObjectSet(LineName, OBJPROP_WIDTH, LineWidth);
}
else
{
ObjectMove(LineName, 0, LineShiftTime, LinePos);
}
}
//+------------------------------------------------------------------+略奪に感謝します。
ERAN123
1.deinit() の中ではなく、deinit() のすぐ後ろ (deinit() と start() の間) にあるのです。 mqlでは、プロシージャや関数の 書き方に順番は必要ありません。init()を最後に書いても問題ありません。)余談ですが、mqlでは関数やプロシージャを入れ子にすることができないので、他の関数やプロシージャのボディの中に入れることはできません。)
2.各ティックで720本のバーを計算するように修正されました。なぜですか?それは作者に聞くべきでしょう。
1.なぜマークされた2つの関数がdeinitの中にあるのでしょうか?
2.なぜマークされた行に720の値があるのですか?
コードです。
//| DailyBreakout.mq4 |
//| Copyright © 2008, Robert Hill. |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, Robert Hill"
#property link "NONE"
#property indicator_chart_window
//---- input parameters
extern bool Alerts = false;
extern int GMTshift = 0;
extern int LabelShift = 20;
extern int LineShift = 40;
extern string pd = "PipsAboveBelowSR for Alert";
extern int PipDistance = 1;
extern color StandardFontColor = White;
extern int StandardFontSize = 8;
extern color SupportColor = Red;
extern color ResistanceColor = Lime;
datetime LabelShiftTime, LineShiftTime;
double yesterday_high=0;
double yesterday_low=0;
double LastHigh,LastLow,x;
double R1=0;
double S1=0;
bool firstS1=true;
bool firstR1=true;
double myPoint;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
myPoint = SetPoint(Symbol());
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//---- TODO: add your code here
//----
ObjectDelete("R1 Label");
ObjectDelete("R1 Line");
ObjectDelete("S1 Label");
ObjectDelete("S1 Line");
return(0);
}
double SetPoint(string mySymbol)// <<<<<<<-----why here on the deinit?????----------------
{
double mPoint, myDigits;
myDigits = MarketInfo (mySymbol, MODE_DIGITS);
if (myDigits < 4)
mPoint = 0.01;
else
mPoint = 0.0001;
return(mPoint);
}
int DoAlerts()//<<<<<<<<<-------why here on the deint??????-----------------
{
double DifAboveR1,PipsLimit;
double DifBelowS1;
DifBelowS1 = S1 - Close[0];
DifAboveR1 = Close[0] - R1;
PipsLimit = PipDistance * myPoint;
if (DifBelowS1 > PipsLimit) firstS1 = true;
if (DifBelowS1 0)
{
if (firstS1)
{
Alert("Below S1 Line by ",DifBelowS1, " for ", Symbol(),"-",Period());
PlaySound("alert.wav");
firstS1=false;
}
}
if (DifAboveR1 > PipsLimit) firstR1 = true;
if (DifAboveR1 0)
{
if (firstR1)
{
Alert("Above R1 Line by ",DifAboveR1," for ", Symbol(),"-",Period());
Sleep(2000);
PlaySound("timeout.wav");
firstR1=false;
}
}
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
//---- TODO: add your code here
double day_high=0;
double day_low=0;
double yesterday_open=0;
double today_open=0;
double cur_day=0;
double prev_day=0;
int cnt=720;//<<<<<----why 720 ????????--------------------------------------------------
//---- exit if period is greater than 4 hr charts
if(Period() > 240)
{
Print("Error - Chart period is greater than 4 hr.");
return(-1); // then exit
}
//---- Get new daily prices & calculate pivots
cur_day=0;
prev_day=0;
//---- Get new daily prices & calculate pivots
while (cnt!= 0)
{
cur_day = TimeDay(Time[cnt]- (GMTshift*3600));
if (prev_day != cur_day)
{
yesterday_high = day_high;
yesterday_low = day_low;
day_high = High[cnt];
day_low = Low[cnt];
prev_day = cur_day;
}
if (High[cnt]>day_high)
{
day_high = High[cnt];
}
if (Low[cnt]<day_low)
{
day_low = Low[cnt];
}
cnt--;
}
S1 = yesterday_low;
R1 = yesterday_high;
LabelShiftTime = Time[LabelShift];
LineShiftTime = Time[LineShift];
//---- Set line labels on chart window
DisplayLabel("R1 label", "R1", R1, StandardFontSize, StandardFontColor);
DisplayLabel("S1 label", "S1", S1, StandardFontSize, StandardFontColor);
//--- Draw Pivot lines on chart
DisplayLine("S1 line", S1, 0, STYLE_DASHDOTDOT, SupportColor);
DisplayLine("R1 line", R1, 0, STYLE_DASHDOTDOT, ResistanceColor);
//---- done
// Now check for Alert
if (Alerts) DoAlerts();
//----
return(0);
}
//---- Set line labels on chart window
void DisplayLabel(string LabelName, string LabelText, double LabelPos, int LabelFontSize, color LabelColor)
{
if(ObjectFind(LabelName) != 0)
{
ObjectCreate(LabelName, OBJ_TEXT, 0, LabelShiftTime, LabelPos);
ObjectSetText(LabelName, LabelText, LabelFontSize, "Arial", LabelColor);
}
else
{
ObjectMove(LabelName, 0, LabelShiftTime, LabelPos);
}
}
//--- Draw Pivot lines on chart
void DisplayLine(string LineName, double LinePos, int LineWidth, int LineStyle, color LineColor)
{
if(ObjectFind(LineName) != 0)
{
ObjectCreate(LineName, OBJ_HLINE, 0, LineShiftTime, LinePos);
ObjectSet(LineName, OBJPROP_STYLE, LineStyle);
ObjectSet(LineName, OBJPROP_COLOR, LineColor);
if (LineWidth > 0) ObjectSet(LineName, OBJPROP_WIDTH, LineWidth);
}
else
{
ObjectMove(LineName, 0, LineShiftTime, LinePos);
}
}
//+------------------------------------------------------------------+mladenさん、こんにちは。
リプレイありがとうございました。
1.これだけ気づきました(これだけ気づかずにミストしてました)
2.その本当の謎
保留中の注文は ライトな助けを必要としています!!!!!!!!!!
こんにちは。
保留中の注文について質問です。
私は2つの保留中の注文を持っている 買いと販売 それらのうちの1つがヒットした私は、他のを閉じるために何を。
私はちょうど初心者mqlのプログラマとその私の能力を超えて、今です。
どのような方向性の友人?
多くの感謝。
このようなものが使用できます。
{
bool trade.BuyEntered = false;
bool trade.SellEntered = false;
for (int i=OrdersTotal()-1; i>=0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
//
//
//
//
//
if ( OrderSymbol()==trade.symbol && OrderMagicNumber()==MagicNumber )
{
int type = OrderType();
if (type==OP_BUY && !trade.ByEntered) trade.BuyEntered = true;
if (type==OP_SELL && !trade.SellEntered) trade.SellEntered = true;
if (type >OP_SELL && (trade.ByEntered || trade.BuyEntered))
OrderDelete(OrderTicket());
}
}
}
同じマジックナンバーとシンボルを持つ通常の注文が見つかれば、保留中の注文を 削除します。
こんにちは友人
保留中の注文について質問があります。
私は2つの保留中の注文を持っている 買いと販売 それらのうちの1つがヒットしたら、私は他のを閉じるにはどうすればよいですか。
私はちょうど初心者mqlのプログラマとその私の能力を超えて、今です。
どのような方向性の友人?
どうもありがとうmladen
ありがとうございます、確認して みます。
ありがとうございました。
問題なく動作するはずです
良い週末をお過ごしください。
mladen
ありがとうございます、確認します。
ありがとうございましたトレーダー仲間の皆さん、こんにちは。
私はmql4でプログラミングしようとしている戦略で数ヶ月間取引しています。
私は次のようなテイクプロフィット 付きの注文を実行します。
"OrderSend(Symbol(),OP_BUY,lots,Ask,10,30,Ask+takeprofit,「テスト」, 12345, 0, Green);"
さて、この注文がクローズしたら(t/pまたはs/l)、また同じ注文を出したい。
"OrderSend(Symbol(), OP_BUY, lots, Ask, 10, 30, Ask+takeprofit, "test", 12345, 0, Green);" とします。
といった具合に、前の買いが決済されるたびに買いポジションを導入するようにしています。
数日前からmql4の勉強を始めたのですが、この件で行き詰まっています。よろしくお願いします。
現在開いている注文(買い注文でも売り注文でも)の数を単純に数えて、それが0になったら新しいポジションを開いたらどうでしょう?
トレーダー仲間の皆さん、こんにちは。
私はmql4でプログラムしようとしている戦略で数ヶ月間取引しています。
私は次のようなテイクプロフィット付きの注文を実行します。
"OrderSend(Symbol(),OP_BUY,lots,Ask,10,30,Ask+takeprofit,「テスト」, 12345, 0, Green);"
さて、この注文がクローズしたら(t/pまたはs/l)、また同じ注文を出したい。
"OrderSend(Symbol(), OP_BUY, lots, Ask, 10, 30, Ask+takeprofit, "test", 12345, 0, Green);" とします。
というように、前の買いが決済されるたびに、買いポジションを導入するようにします。
数日前からmql4の勉強を始めたのですが、この件で行き詰っています。助けてください。というように、前の買いが終了するたびに買いポジションを導入します。
数日前からmql4の勉強を始めたのですが、この件で行き詰まっています。助けてください!MLadenさんのおっしゃるとおり、注文をカウントして、新しい注文の準備ができたかどうかをチェックする必要があります。
この関数を使うといいかもしれません。
これは、指定したマジックナンバーと 注文タイプで選択された注文のうち、いくつがすでにオープンされているかをカウントします。
注文タイプに -1 を指定すると、選択したマジックナンバーですべての注文をカウントします。
お楽しみください。
int orderCount(int type,int magic)
{
int oc = 0;
for(int cnt = 0 ;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderMagicNumber() == magic && (OrderType() == type || type == -1))
oc+=1;
}
return(oc);
}