コーディングの方法は? - ページ 237 1...230231232233234235236237238239240241242243244...347 新しいコメント Guyver 2010.06.19 12:56 #2361 EAの種類によっては、スプレッドも継続的に保存する必要があることに留意してください。 xx3xxx 2010.06.19 13:21 #2362 HIGH [0] -- 現在のバーで、ちょうど開始したところです。 Lowの場合、私は知らない、多分Low[1]です。 mal99 2010.06.20 12:05 #2363 OrderSend(),OrderModify()を置くべき正しい順序について 先日、フォーラムでOrderSend()とOrderModify()関数についての トピックを読みました。 このトピックは、あるEAが動作し、他のEAが動作しなかった理由の手がかりを与えて、私は関数OrderSend()とOrderModify()が適切に書かれているかどうかを確認する方法を疑問に思っていますany examples? DooMGuarD 2010.06.21 10:17 #2364 こんにちは、皆さん MT4で全ペアのリストを取得するためのコードを教えてください。 ありがとうございます。 シャルル wolfe 2010.06.22 01:59 #2365 sunshineh: こんにちは。Ask[1]と書くのはおかしいのですが、最後のティックからAsk-Priceを取得するにはどうしたらいいのでしょうか? ありがとうございます。 リアルタイムでティックを保存して、EAやインジケータからアクセスする必要があります。 もしご興味があれば、例を書いてみますね。 Guyver 2010.06.22 11:16 #2366 DooMGuarD: こんにちは、皆さん...MT4で全ペアのリストを取得するためのコードを教えてください。 ありがとうございます。 シャルル Mql5でやるのが簡単だと思うので、落ち着くまで待ちましょう。 削除済み 2010.06.23 07:28 #2367 マジックトレンドの値を変数で取得する... こんにちは! EAを開発中なのですが、マジックトレンドのインジケータの値を変数で取得する方法を考えています。 今のところ、ゼロからコーディングしなければならないようです。 どなたか助けていただけませんか? どうもありがとうございます! Guyver 2010.06.23 11:14 #2368 atch3000: こんにちは。 EAを開発していて、マジックトレンドインジケータの値を変数で取得する方法を考えています。 今のところ、ゼロからコーディングしなければならないようですが、数学に関する情報が見つかりません。 どなたか助けてください。 どうもありがとうございます! MQL4でICustom 関数を使用する方法についての情報を探してください。この関数を使えば、EAで外部インジケータを呼び出すことができます。 -ガイバー kuchara23 2010.06.24 15:11 #2369 ロボット - 高速・低速の2つの移動平均MAに関する自動化EA #define SIGNAL_NONE 0 #define SIGNAL_BUY 1 #define SIGNAL_SELL 2 #define SIGNAL_CLOSEBUY 3 #define SIGNAL_CLOSESELL 4 extern int MagicNumber = 0; extern bool SignalMail = False; extern bool EachTickMode = True; extern double Lots = 0.2; extern int Slippage = 3; extern bool UseStopLoss = True; extern int StopLoss = 15; extern bool UseTakeProfit = True; extern int TakeProfit = 30; extern bool UseTrailingStop = True; extern int TakeProfit = 30; extern bool UseTrailingStop = True; extern int TrailingStop = 20; int BarCount; int Current; bool TickCheck = False; //+------------------------------------------------------------------+ //| エキスパート初期化関数 //+------------------------------------------------------------------+ int init() { BarCount = Bars; if (EachTickMode) Current = 0; else Current = 1; return(0); } //+------------------------------------------------------------------+ //| エキスパート初期化関数 //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| エキスパートスタート機能 //+------------------------------------------------------------------+ int start() { int Order = SIGNAL_NONE; int Total, Ticket; double StopLossLevel, TakeProfitLevel; if (EachTickMode && Bars != BarCount) TickCheck = False; Total = OrdersTotal(); オーダー = SIGNAL_NONE; //+------------------------------------------------------------------+ //| 変数開始 //+------------------------------------------------------------------+ double Var1 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1); double Var2 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1); double Buy1_1 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1); double Buy1_2 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1); double Sell1_1 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1); double Sell1_2 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1); double CloseBuy1_1 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1); double CloseBuy1_2 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1)です。 double CloseSell1_1 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1); double CloseSell1_2 = iMA("GBPUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1); //+------------------------------------------------------------------+ //| 変数終了 //+------------------------------------------------------------------+ //ポジションチェック bool IsTrade = False; for (int i = 0; i < トータル; i ++) { { {オーダーセレクト(i, SELECT_BY_PASS) OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if(OrderType() <= OP_SELL && OrderSymbol() == Symbol())) { IsTrade = True? IsTrade = Trueです。 if(OrderType() == OP_BUY){ //Close //+------------------------------------------------------------------+ //| シグナル開始(買い終了) //+------------------------------------------------------------------+ if (CloseBuy1_1 > CloseBuy1_2 && False) Order = SIGNAL_CLOSEBUY; //+------------------------------------------------------------------+ //| シグナル終了(買い終了) //+------------------------------------------------------------------+ if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)) )){ OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen); if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy").If(EachTickMode):シグナルを送信します。 if (!EachTickMode) BarCount = Bars; IsTrade = False; を続けます。 } //トレーリングストップ if(UseTrailingStop && TrailingStop > 0) { /トレイリングストップ if(ビッド - 注文開始価格() > ポイント * TrailingStop) { { if(OrderStopLoss() < ビッド - ポイント * トレイリングストップ) { { { OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen)を実行します。 if (!EachTickMode) BarCount = Bars; を続けます。 } } } } else { //Close //+------------------------------------------------------------------+ //| シグナル開始(売り終了) //+------------------------------------------------------------------+ if (CloseSell1_1 > CloseSell1_2False) Order = SIGNAL_CLOSESELL; //+------------------------------------------------------------------+ //| シグナル終了(売り終了) //+------------------------------------------------------------------+ if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)) )){ OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange); if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell").If(EachTickMode):シグナルを送信します。 if (!EachTickMode) BarCount = Bars; IsTrade = False; を続けます。 } //トレーリングストップ if(UseTrailingStop && TrailingStop > 0) { /トレーリングストップ if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) { { { if((OrderStopLoss() > (Ask + Point * TrailingStop))|| (OrderStopLoss() == 0)) { { OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange)を実行します。 if (!EachTickMode) BarCount = Bars; を続けます。 } } } } } } //+------------------------------------------------------------------+ //| Signal Begin(Entry)シグナル //+------------------------------------------------------------------+ if (Buy1_1 < Buy1_2 && False) Order = SIGNAL_BUY; if (Sell1_1 < Sell1_2 && False) Order = SIGNAL_SELL; if (Sell1_1 < Sell1_2 && False) 注文 = SIGNAL_SELL; //+------------------------------------------------------------------+ //| シグナル終了 //+------------------------------------------------------------------+ //買い if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)) )){ if(!IsTrade){。 //フリーマージンチェック if (アカウントフリーマージン() < (1000 * ロット)) { Print("資金がありません。フリーマージン = ", AccountFreeMargin()); return(0); if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0; if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0.です。 Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue)。 if(チケット > 0) { if (オーダーセレクト(チケット、SELECT_BY_TICKET、MODE_TRADES)) { Print("BUY order opened : ", OrderOpenPrice()); if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy")。 } else { Print("買い注文の開始エラー :", GetLastError()); } if (EachTickMode) TickCheck = True; if (!EachTickMode) BarCount = Bars; return(0); } } //売り if (注文 == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))。{ if(!IsTrade){。 //フリーマージンチェック if (アカウントフリーマージン() < (1000 * ロット)) { Print("資金がありません。フリーマージン = ", AccountFreeMargin()); return(0); if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0; if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0.です。 Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink)。 if(チケット > 0) { if (オーダーセレクト(チケット, SELECT_BY_TICKET, MODE_TRADES)) { Print("SELL order opened : ", OrderOpenPrice()); if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell")。 } else { Print("Error opening SELL order :", GetLastError()); } if (EachTickMode) TickCheck = True; if (!EachTickMode) BarCount = Bars; return(0); } } if (!EachTickMode) BarCount = Bars; return(0) } } if (!EachTickMode) BarCount = Bars; return(0); } //+------------------------------------------------------------------+ 私は知らないので、//どこにエラーが発生します。 アスク! ICustom機能 How to code? Guyver 2010.06.24 15:27 #2370 どのようなエラーが発生しますか? 1...230231232233234235236237238239240241242243244...347 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
EAの種類によっては、スプレッドも継続的に保存する必要があることに留意してください。
HIGH [0] -- 現在のバーで、ちょうど開始したところです。
Lowの場合、私は知らない、多分Low[1]です。
OrderSend(),OrderModify()を置くべき正しい順序について
先日、フォーラムでOrderSend()とOrderModify()関数についての トピックを読みました。
このトピックは、あるEAが動作し、他のEAが動作しなかった理由の手がかりを与えて、私は関数OrderSend()とOrderModify()が適切に書かれているかどうかを確認する方法を疑問に思っていますany examples?
こんにちは、皆さん
MT4で全ペアのリストを取得するためのコードを教えてください。
ありがとうございます。
シャルル
こんにちは。
Ask[1]と書くのはおかしいのですが、最後のティックからAsk-Priceを取得するにはどうしたらいいのでしょうか?
ありがとうございます。リアルタイムでティックを保存して、EAやインジケータからアクセスする必要があります。 もしご興味があれば、例を書いてみますね。
こんにちは、皆さん...
MT4で全ペアのリストを取得するためのコードを教えてください。
ありがとうございます。
シャルルMql5でやるのが簡単だと思うので、落ち着くまで待ちましょう。![](https://c.mql5.com/forextsd/smiles/wink.png)
マジックトレンドの値を変数で取得する...
こんにちは!
EAを開発中なのですが、マジックトレンドのインジケータの値を変数で取得する方法を考えています。
今のところ、ゼロからコーディングしなければならないようです。
どなたか助けていただけませんか?
どうもありがとうございます!
こんにちは。
EAを開発していて、マジックトレンドインジケータの値を変数で取得する方法を考えています。
今のところ、ゼロからコーディングしなければならないようですが、数学に関する情報が見つかりません。
どなたか助けてください。
どうもありがとうございます!MQL4でICustom 関数を使用する方法についての情報を探してください。この関数を使えば、EAで外部インジケータを呼び出すことができます。
-ガイバー
ロボット - 高速・低速の2つの移動平均MAに関する自動化EA
#define SIGNAL_NONE 0
#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4
extern int MagicNumber = 0;
extern bool SignalMail = False;
extern bool EachTickMode = True;
extern double Lots = 0.2;
extern int Slippage = 3;
extern bool UseStopLoss = True;
extern int StopLoss = 15;
extern bool UseTakeProfit = True;
extern int TakeProfit = 30;
extern bool UseTrailingStop = True; extern int TakeProfit = 30; extern bool UseTrailingStop = True;
extern int TrailingStop = 20;
int BarCount;
int Current;
bool TickCheck = False;
//+------------------------------------------------------------------+
//| エキスパート初期化関数
//+------------------------------------------------------------------+
int init() {
BarCount = Bars;
if (EachTickMode) Current = 0; else Current = 1;
return(0);
}
//+------------------------------------------------------------------+
//| エキスパート初期化関数
//+------------------------------------------------------------------+
int deinit() {
return(0);
}
//+------------------------------------------------------------------+
//| エキスパートスタート機能
//+------------------------------------------------------------------+
int start() {
int Order = SIGNAL_NONE;
int Total, Ticket;
double StopLossLevel, TakeProfitLevel;
if (EachTickMode && Bars != BarCount) TickCheck = False;
Total = OrdersTotal();
オーダー = SIGNAL_NONE;
//+------------------------------------------------------------------+
//| 変数開始
//+------------------------------------------------------------------+
double Var1 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);
double Var2 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);
double Buy1_1 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);
double Buy1_2 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);
double Sell1_1 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);
double Sell1_2 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);
double CloseBuy1_1 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);
double CloseBuy1_2 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1)です。
double CloseSell1_1 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);
double CloseSell1_2 = iMA("GBPUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);
//+------------------------------------------------------------------+
//| 変数終了
//+------------------------------------------------------------------+
//ポジションチェック
bool IsTrade = False;
for (int i = 0; i < トータル; i ++) { { {オーダーセレクト(i, SELECT_BY_PASS)
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol())) { IsTrade = True?
IsTrade = Trueです。
if(OrderType() == OP_BUY){
//Close
//+------------------------------------------------------------------+
//| シグナル開始(買い終了)
//+------------------------------------------------------------------+
if (CloseBuy1_1 > CloseBuy1_2 && False) Order = SIGNAL_CLOSEBUY;
//+------------------------------------------------------------------+
//| シグナル終了(買い終了)
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)) )){
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy").If(EachTickMode):シグナルを送信します。
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
を続けます。
}
//トレーリングストップ
if(UseTrailingStop && TrailingStop > 0) { /トレイリングストップ
if(ビッド - 注文開始価格() > ポイント * TrailingStop) { {
if(OrderStopLoss() < ビッド - ポイント * トレイリングストップ) { { {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen)を実行します。
if (!EachTickMode) BarCount = Bars;
を続けます。
}
}
}
} else {
//Close
//+------------------------------------------------------------------+
//| シグナル開始(売り終了)
//+------------------------------------------------------------------+
if (CloseSell1_1 > CloseSell1_2False) Order = SIGNAL_CLOSESELL;
//+------------------------------------------------------------------+
//| シグナル終了(売り終了)
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)) )){
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell").If(EachTickMode):シグナルを送信します。
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
を続けます。
}
//トレーリングストップ
if(UseTrailingStop && TrailingStop > 0) { /トレーリングストップ
if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) { { {
if((OrderStopLoss() > (Ask + Point * TrailingStop))|| (OrderStopLoss() == 0)) { {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange)を実行します。
if (!EachTickMode) BarCount = Bars;
を続けます。
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| Signal Begin(Entry)シグナル
//+------------------------------------------------------------------+
if (Buy1_1 < Buy1_2 && False) Order = SIGNAL_BUY;
if (Sell1_1 < Sell1_2 && False) Order = SIGNAL_SELL; if (Sell1_1 < Sell1_2 && False) 注文 = SIGNAL_SELL;
//+------------------------------------------------------------------+
//| シグナル終了
//+------------------------------------------------------------------+
//買い
if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)) )){
if(!IsTrade){。
//フリーマージンチェック
if (アカウントフリーマージン() < (1000 * ロット)) {
Print("資金がありません。フリーマージン = ", AccountFreeMargin());
return(0);
if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0.です。
Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue)。
if(チケット > 0) {
if (オーダーセレクト(チケット、SELECT_BY_TICKET、MODE_TRADES)) {
Print("BUY order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy")。
} else {
Print("買い注文の開始エラー :", GetLastError());
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
//売り
if (注文 == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))。{
if(!IsTrade){。
//フリーマージンチェック
if (アカウントフリーマージン() < (1000 * ロット)) {
Print("資金がありません。フリーマージン = ", AccountFreeMargin());
return(0);
if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0.です。
Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink)。
if(チケット > 0) {
if (オーダーセレクト(チケット, SELECT_BY_TICKET, MODE_TRADES)) {
Print("SELL order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell")。
} else {
Print("Error opening SELL order :", GetLastError());
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
if (!EachTickMode) BarCount = Bars; return(0) } } if (!EachTickMode) BarCount = Bars;
return(0);
}
//+------------------------------------------------------------------+
私は知らないので、//どこにエラーが発生します。
どのようなエラーが発生しますか?