コーディングの方法は? - ページ 299 1...292293294295296297298299300301302303304305306...347 新しいコメント kappari 2012.07.08 06:04 #2981 MQL4でのカスタム時間入力 MQL4で、ユーザーによって定義されたバーからチャートの終わりまで水平線を 引くことができるコードを書くことは可能でしょうか? 以下はMetastockと同じコードです。 {Customer Inputs} Dy:=Input("Day",1,31,1); Mn:=Input("Month",1,12,1); Yr:=Input("Year",2000,2012,2010); {Time Calculation} Time:=Dy=DayOfMonth() AND Mn=Month() AND Yr=Year(); {Formula} Start:= ValueWhen(1,Time,CLOSE); {Output} Start; そしてこれがその結果です。 MQL4で同じようなことができればと思います。 Mladen Rakic 2012.07.08 07:42 #2982 このように試してみてください。 #property indicator_chart_window extern string startFrom = "2012.07.06 00:00"; int init() { return(0); } int deinit() { ObjectDelete("hLine"); return(0); } int start() { string name = "hLine"; int barShift = iBarShift(NULL,0,StrToTime(startFrom)); ObjectCreate(name,OBJ_TREND,0,0,0,0,0); ObjectSet(name,OBJPROP_PRICE1,Close); ObjectSet(name,OBJPROP_PRICE2,Close); ObjectSet(name,OBJPROP_TIME1,Time); ObjectSet(name,OBJPROP_TIME2,Time[0]); return (0); } このコードをコピーして、あるインジケータ(すでに動作しているインジケータです)に貼り付けて、チャートに貼り付けてください。 kappari: MQL4で、ユーザーによって定義されたバーからチャートの終わりまで水平線を引くことができるコードを書くことは可能でしょうか?以下は、Metastockで同じコードです。 {Customer Inputs} Dy:=Input("Day",1,31,1); Mn:=Input("Month",1,12,1); Yr:=Input("Year",2000,2012,2010); {Time Calculation} Time:=Dy=DayOfMonth() AND Mn=Month() AND Yr=Year(); {Formula} Start:= ValueWhen(1,Time,CLOSE); {Output} Start; 結果はこんな感じです。 MQL4で同じようなことができればと思います。 How to code? Way to SHADE AREA refresh objects ? kappari 2012.07.08 15:31 #2983 mladen: こんな感じでやってみてください。#property indicator_chart_window extern string startFrom = "2012.07.06 00:00"; int init() { return(0); } int deinit() { ObjectDelete("hLine"); return(0); } int start() { string name = "hLine"; int barShift = iBarShift(NULL,0,StrToTime(startFrom)); ObjectCreate(name,OBJ_TREND,0,0,0,0,0); ObjectSet(name,OBJPROP_PRICE1,Close); ObjectSet(name,OBJPROP_PRICE2,Close); ObjectSet(name,OBJPROP_TIME1,Time); ObjectSet(name,OBJPROP_TIME2,Time[0]); return (0); } このインジケーターをコピー&ペーストして、チャートに貼り付けてください。 あなたは最高です、ありがとうございます。 tkuan77 2012.07.09 12:06 #2984 ムラデンさん、こんにちは。 この関数の 根拠について、もう少し詳しく教えてください。まだよく理解できていないんです。ありがとうございます。 テランス mladen: この関数を試してみてください。int countOpenedOrders(int type) { int openedOrders = 0; for(int i=0; i < OrdersTotal(); i++) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) break; if(OrderSymbol() != Symbol()) continue; if(OrderMagicNumber() != MagicNumber) continue; if(OrderType() == type) openedOrders++; } return(openedOrders); } [/PHP] To count opened buy orders, call it like this : int openedBuys = countOpened(OP_BUY); to count opened sell orders, call it like this : [PHP]int openedSells = countOpened(OP_SELL); if openedBuys==0 open buyif openedSells==0 open sell. Mladen Rakic 2012.07.09 13:50 #2985 tkuan77 注文を一度に1つの買いと1つの売りに制限したかったのですね。 そこで、いずれかのポジションをオープンする前にオープンオーダーカウンターを呼び出すと、オープンした買いまたは売りの数を制御 することができます。 例: int openedBuys = countOpened(OP_BUY); if (openedBuys==0) code for open a buy order 例:openBuysが0以外の場合、新しい買い注文は開きません。同じロジックが売りにも適用されます(この投稿の2番目の例です)。 tkuan77: こんにちは、Mladen。 この関数の論理的根拠について、もう少し詳しく教えてください。私はまだよく理解していません。ありがとうございます。 Terrance tkuan77 2012.07.09 14:07 #2986 ムラデンさん、こんにちは。 多分、私は自分自身を間違って伝えるかもしれません。私が達成しようとしていることは、私の買い基準が満たされたとき、それは買いをトリガーし、別の買い基準が再び満たされた場合、それは別の買いまたは売り基準が満たされた場合、売りをトリガーします。しかし、どの時点でも最大取引数は2です。 以前、あなたの方法を試しましたが、システムが同時に2つの取引を開始することがあり、バー機能で それを制限しようとしましたが、EAが同時に2つの取引を開始するという同じ問題が発生しました。 原因は何でしょうか?私のロジックに何か関係があるのでしょうか? 回答 Terrance mladen: tkuan77注文を一度に1つの買いと1つの売りに制限したかったのですね。 そこで、ポジションをオープンする前にオープンオーダーカウンターを呼び出すと、オープンした買いまたは売りの数を制御することができます。 例: int openedBuys = countOpened(OP_BUY); if (openedBuys==0) code for open a buy order openBuysが0以外なら、新しい買い注文は出ません。同じロジックが売りにも適用される(この記事の2番目の例です) Mladen Rakic 2012.07.09 14:17 #2987 現在のバーで何らかの注文がすでにオープンされているかどうかをチェックする機能を追加すれば、次のティックで新しい注文がオープンされるのを防ぐことができます。もし、イエス(現在のバーですでに注文が出されている)なら、新しい注文は出せない。もしそうでなければ、新しい注文を出すことができます。現在のバーで約定した注文をカウントする関数を 以下に示します。 int countOpenedOnACurrentBar(int type) { int openedAtBar = 0; datetime startTime = Time[0]; datetime endTime = Time[0]+Period()*60; for(int i=0; i < OrdersTotal(); i++) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) break; if(OrderMagicNumber() != MagicNumber) continue; if(OrderSymbol() != Symbol()) continue; if(OrderType() != type) continue; if(OrderOpenTime()=endTime) continue; openedAtBar++; break; } return(openedAtBar); } tkuan77: こんにちは、Mladenです。もしかしたら、私の説明が間違っていたかもしれません。私が達成しようとしていることは、私の買い基準が満たされたとき、それは買いをトリガーし、別の買い基準が再び満たされた場合、それは別の買いまたは売り基準が満たされた場合、売りをトリガーします。しかし、どの時点でも最大取引数は2です。 以前、あなたの方法を試しましたが、システムが同時に2つの取引を開始することがあり、バー機能でそれを制限しようとしましたが、EAが同時に2つの取引を開始するという同じ問題が発生しました。 原因は何でしょうか?私のロジックに何か関係があるのでしょうか? 回答 テランス コーディングのヘルプ エリート指標 :) EAが複数のペアで実行されない、助けが必要 NMSS_2 2012.07.10 01:37 #2988 tkuan77: こんにちは、Mladen。多分、私は自分自身を誤って表現しているかもしれません。私が達成しようとしていることは、私の買い基準が満たされたとき、それは買いをトリガーし、別の買い基準が再び満たされた場合、それは別の買いまたは売り基準が満たされている場合、売りをトリガーします。しかし、どの時点でも最大取引数は2です。 以前、あなたの方法を試しましたが、システムが同時に2つの取引を開始することがあり、バー機能でそれを制限しようとしましたが、EAが同時に2つの取引を開始するという同じ問題が発生しました。 原因は何でしょうか?私のロジックに何か関係があるのでしょうか? 回答 テランス それは、2つ目の取引が1つ目の取引とどのように異なるかを指定しなかったからです。違いはバーの本数やFirstBuyPriceからの価格などです。 tkuan77 2012.07.11 14:15 #2989 Mladenさん、ありがとうございます!ただ、確認したいのですが、このコードはlong/short関数の前、間、または他の場所に置くのでしょうか?というのも、エラーが出続けるようで、その原因がわからないのです。また、MagicNumberは整数であるべきなのでしょうか? テランス total = OrdersTotal(); if(total < 2) { int countOpenedOnACurrentBar(int type) { int openedAtBar = 0; datetime startTime = Time[0]; datetime endTime = Time[0]+Period()*60; for(int i=0; i < OrdersTotal(); i++) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) break; if(OrderMagicNumber() != MagicNumber) continue; if(OrderSymbol() != Symbol()) continue; if(OrderSymbol() != Symbol()) continue; if(OrderType() != type) continue; もし、OrderType() != type) continue; if(OrderOpenTime()=endTime)continue。 openedAtBar++; break; return(openedAtBar)。 } if(isCrossed == 1 && shortEma > mainshortEma && longEma > mainshortEma) { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,1,Ask-StopLoss*Point,Ask+TakeProfit*Point, "私のEA",12345,0,緑); if(チケット>0) { if(オーダーセレクト(チケット,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice()); else Print("BUY注文の開始エラー :",GetLastError())。 return(0); } if(isCrossed == 2 && shortEma < mainshortEma && longEma < mainshortEma) { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,1,Bid+StopLoss*Point,Bid-TakeProfit*Point, "私のEA",12345,0,赤); if(チケット>0) { if(オーダーセレクト(チケット,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice()); else Print("SELL注文の開始エラー :",GetLastError()); return(0); return(0); } mladen: 現在のバーで何らかの注文がすでに開かれているかどうかをチェックするようにすれば、次のティックで新しい注文が開かれるのを防ぐことができます。もしイエスなら(現在のバーですでに注文が出されている)、新しい注文は出せない。もしそうでなければ、新しい注文を出すことができます。以下は、現在のバーで開かれたrewiredタイプの注文をカウントするための関数です。int countOpenedOnACurrentBar(int type) { int openedAtBar = 0; datetime startTime = Time[0]; datetime endTime = Time[0]+Period()*60; for(int i=0; i < OrdersTotal(); i++) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) break; if(OrderMagicNumber() != MagicNumber) continue; if(OrderSymbol() != Symbol()) continue; if(OrderType() != type) continue; if(OrderOpenTime()=endTime) continue; openedAtBar++; break; } return(openedAtBar); } How to code? Help with Entry Criteria 生のアイデア Mladen Rakic 2012.07.11 15:30 #2990 ... テランス これは関数 です。これを EA の末尾に配置し、現在のバーで注文がすでに開かれているかどうかをチェックするために、適切と思われる場所に呼び出しを配置します。 tkuan77: Mladenさん、ありがとうございます。というのも、エラーが出続けるようで、その原因がわからないのです。また、MagicNumberは整数値なのでしょうか?Terrance total = OrdersTotal(); if(total < 2) { int countOpenedOnACurrentBar(int type) { int openedAtBar = 0; datetime startTime = Time[0]; datetime endTime = Time[0]+Period()*60; for(int i=0; i < OrdersTotal(); i++) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) break; if(OrderMagicNumber() != MagicNumber) continue; if(OrderSymbol() != Symbol()) continue; if(OrderSymbol() != Symbol()) continue; if(OrderType() != type) continue; もし、OrderType() != type) continue; if(OrderOpenTime()=endTime)continue。 openedAtBar++; break; return(openedAtBar)。 } if(isCrossed == 1 && shortEma > mainshortEma && longEma > mainshortEma) { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,1,Ask-StopLoss*Point,Ask+TakeProfit*Point, "私のEA",12345,0,緑); if(チケット>0) { if(オーダーセレクト(チケット,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice()); else Print("BUY注文の開始エラー :",GetLastError())。 return(0); } if(isCrossed == 2 && shortEma < mainshortEma && longEma < mainshortEma) { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,1,Bid+StopLoss*Point,Bid-TakeProfit*Point, "私のEA",12345,0,赤); if(チケット>0) { if(オーダーセレクト(チケット,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice()); else Print("SELL注文の開始エラー :",GetLastError()); return(0); return(0)。 } 1...292293294295296297298299300301302303304305306...347 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
MQL4でのカスタム時間入力
MQL4で、ユーザーによって定義されたバーからチャートの終わりまで水平線を 引くことができるコードを書くことは可能でしょうか?
以下はMetastockと同じコードです。
Dy:=Input("Day",1,31,1);
Mn:=Input("Month",1,12,1);
Yr:=Input("Year",2000,2012,2010);
{Time Calculation}
Time:=Dy=DayOfMonth() AND Mn=Month() AND Yr=Year();
{Formula}
Start:= ValueWhen(1,Time,CLOSE);
{Output}
Start;そしてこれがその結果です。
MQL4で同じようなことができればと思います。
このように試してみてください。
extern string startFrom = "2012.07.06 00:00";
int init() { return(0); }
int deinit() { ObjectDelete("hLine"); return(0); }
int start()
{
string name = "hLine";
int barShift = iBarShift(NULL,0,StrToTime(startFrom));
ObjectCreate(name,OBJ_TREND,0,0,0,0,0);
ObjectSet(name,OBJPROP_PRICE1,Close);
ObjectSet(name,OBJPROP_PRICE2,Close);
ObjectSet(name,OBJPROP_TIME1,Time);
ObjectSet(name,OBJPROP_TIME2,Time[0]);
return (0);
}このコードをコピーして、あるインジケータ(すでに動作しているインジケータです)に貼り付けて、チャートに貼り付けてください。
MQL4で、ユーザーによって定義されたバーからチャートの終わりまで水平線を引くことができるコードを書くことは可能でしょうか?
以下は、Metastockで同じコードです。
Dy:=Input("Day",1,31,1);
Mn:=Input("Month",1,12,1);
Yr:=Input("Year",2000,2012,2010);
{Time Calculation}
Time:=Dy=DayOfMonth() AND Mn=Month() AND Yr=Year();
{Formula}
Start:= ValueWhen(1,Time,CLOSE);
{Output}
Start;結果はこんな感じです。
MQL4で同じようなことができればと思います。こんな感じでやってみてください。
extern string startFrom = "2012.07.06 00:00";
int init() { return(0); }
int deinit() { ObjectDelete("hLine"); return(0); }
int start()
{
string name = "hLine";
int barShift = iBarShift(NULL,0,StrToTime(startFrom));
ObjectCreate(name,OBJ_TREND,0,0,0,0,0);
ObjectSet(name,OBJPROP_PRICE1,Close);
ObjectSet(name,OBJPROP_PRICE2,Close);
ObjectSet(name,OBJPROP_TIME1,Time);
ObjectSet(name,OBJPROP_TIME2,Time[0]);
return (0);
}あなたは最高です、ありがとうございます。
ムラデンさん、こんにちは。
この関数の 根拠について、もう少し詳しく教えてください。まだよく理解できていないんです。ありがとうございます。
テランス
この関数を試してみてください。
{
int openedOrders = 0;
for(int i=0; i < OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) break;
if(OrderSymbol() != Symbol()) continue;
if(OrderMagicNumber() != MagicNumber) continue;
if(OrderType() == type) openedOrders++;
}
return(openedOrders);
}
[/PHP]
To count opened buy orders, call it like this :
to count opened sell orders, call it like this :
[PHP]int openedSells = countOpened(OP_SELL);tkuan77
注文を一度に1つの買いと1つの売りに制限したかったのですね。
そこで、いずれかのポジションをオープンする前にオープンオーダーカウンターを呼び出すと、オープンした買いまたは売りの数を制御 することができます。
例:
例:openBuysが0以外の場合、新しい買い注文は開きません。同じロジックが売りにも適用されます(この投稿の2番目の例です)。
こんにちは、Mladen。
この関数の論理的根拠について、もう少し詳しく教えてください。私はまだよく理解していません。ありがとうございます。
Terranceムラデンさん、こんにちは。
多分、私は自分自身を間違って伝えるかもしれません。私が達成しようとしていることは、私の買い基準が満たされたとき、それは買いをトリガーし、別の買い基準が再び満たされた場合、それは別の買いまたは売り基準が満たされた場合、売りをトリガーします。しかし、どの時点でも最大取引数は2です。
以前、あなたの方法を試しましたが、システムが同時に2つの取引を開始することがあり、バー機能で それを制限しようとしましたが、EAが同時に2つの取引を開始するという同じ問題が発生しました。
原因は何でしょうか?私のロジックに何か関係があるのでしょうか?
回答
Terrance
tkuan77
注文を一度に1つの買いと1つの売りに制限したかったのですね。
そこで、ポジションをオープンする前にオープンオーダーカウンターを呼び出すと、オープンした買いまたは売りの数を制御することができます。
例:
現在のバーで何らかの注文がすでにオープンされているかどうかをチェックする機能を追加すれば、次のティックで新しい注文がオープンされるのを防ぐことができます。もし、イエス(現在のバーですでに注文が出されている)なら、新しい注文は出せない。もしそうでなければ、新しい注文を出すことができます。現在のバーで約定した注文をカウントする関数を 以下に示します。
{
int openedAtBar = 0;
datetime startTime = Time[0];
datetime endTime = Time[0]+Period()*60;
for(int i=0; i < OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) break;
if(OrderMagicNumber() != MagicNumber) continue;
if(OrderSymbol() != Symbol()) continue;
if(OrderType() != type) continue;
if(OrderOpenTime()=endTime) continue;
openedAtBar++;
break;
}
return(openedAtBar);
}
こんにちは、Mladenです。
もしかしたら、私の説明が間違っていたかもしれません。私が達成しようとしていることは、私の買い基準が満たされたとき、それは買いをトリガーし、別の買い基準が再び満たされた場合、それは別の買いまたは売り基準が満たされた場合、売りをトリガーします。しかし、どの時点でも最大取引数は2です。
以前、あなたの方法を試しましたが、システムが同時に2つの取引を開始することがあり、バー機能でそれを制限しようとしましたが、EAが同時に2つの取引を開始するという同じ問題が発生しました。
原因は何でしょうか?私のロジックに何か関係があるのでしょうか?
回答
テランスこんにちは、Mladen。
多分、私は自分自身を誤って表現しているかもしれません。私が達成しようとしていることは、私の買い基準が満たされたとき、それは買いをトリガーし、別の買い基準が再び満たされた場合、それは別の買いまたは売り基準が満たされている場合、売りをトリガーします。しかし、どの時点でも最大取引数は2です。
以前、あなたの方法を試しましたが、システムが同時に2つの取引を開始することがあり、バー機能でそれを制限しようとしましたが、EAが同時に2つの取引を開始するという同じ問題が発生しました。
原因は何でしょうか?私のロジックに何か関係があるのでしょうか?
回答
テランスそれは、2つ目の取引が1つ目の取引とどのように異なるかを指定しなかったからです。違いはバーの本数やFirstBuyPriceからの価格などです。
Mladenさん、ありがとうございます!ただ、確認したいのですが、このコードはlong/short関数の前、間、または他の場所に置くのでしょうか?というのも、エラーが出続けるようで、その原因がわからないのです。また、MagicNumberは整数であるべきなのでしょうか?
テランス
total = OrdersTotal();
if(total < 2)
{
int countOpenedOnACurrentBar(int type)
{
int openedAtBar = 0;
datetime startTime = Time[0];
datetime endTime = Time[0]+Period()*60;
for(int i=0; i < OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) break;
if(OrderMagicNumber() != MagicNumber) continue;
if(OrderSymbol() != Symbol()) continue; if(OrderSymbol() != Symbol()) continue;
if(OrderType() != type) continue; もし、OrderType() != type) continue;
if(OrderOpenTime()=endTime)continue。
openedAtBar++;
break;
return(openedAtBar)。
}
if(isCrossed == 1 && shortEma > mainshortEma && longEma > mainshortEma)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,1,Ask-StopLoss*Point,Ask+TakeProfit*Point,
"私のEA",12345,0,緑);
if(チケット>0)
{
if(オーダーセレクト(チケット,SELECT_BY_TICKET,MODE_TRADES))
Print("BUY order opened : ",OrderOpenPrice());
else Print("BUY注文の開始エラー :",GetLastError())。
return(0);
}
if(isCrossed == 2 && shortEma < mainshortEma && longEma < mainshortEma)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,1,Bid+StopLoss*Point,Bid-TakeProfit*Point,
"私のEA",12345,0,赤);
if(チケット>0)
{
if(オーダーセレクト(チケット,SELECT_BY_TICKET,MODE_TRADES))
Print("SELL order opened : ",OrderOpenPrice());
else Print("SELL注文の開始エラー :",GetLastError());
return(0);
return(0);
}
現在のバーで何らかの注文がすでに開かれているかどうかをチェックするようにすれば、次のティックで新しい注文が開かれるのを防ぐことができます。もしイエスなら(現在のバーですでに注文が出されている)、新しい注文は出せない。もしそうでなければ、新しい注文を出すことができます。以下は、現在のバーで開かれたrewiredタイプの注文をカウントするための関数です。
{
int openedAtBar = 0;
datetime startTime = Time[0];
datetime endTime = Time[0]+Period()*60;
for(int i=0; i < OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) break;
if(OrderMagicNumber() != MagicNumber) continue;
if(OrderSymbol() != Symbol()) continue;
if(OrderType() != type) continue;
if(OrderOpenTime()=endTime) continue;
openedAtBar++;
break;
}
return(openedAtBar);
}
...
テランス
これは関数 です。これを EA の末尾に配置し、現在のバーで注文がすでに開かれているかどうかをチェックするために、適切と思われる場所に呼び出しを配置します。
Mladenさん、ありがとうございます。というのも、エラーが出続けるようで、その原因がわからないのです。また、MagicNumberは整数値なのでしょうか?
Terrance
total = OrdersTotal();
if(total < 2)
{
int countOpenedOnACurrentBar(int type)
{
int openedAtBar = 0;
datetime startTime = Time[0];
datetime endTime = Time[0]+Period()*60;
for(int i=0; i < OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) break;
if(OrderMagicNumber() != MagicNumber) continue;
if(OrderSymbol() != Symbol()) continue; if(OrderSymbol() != Symbol()) continue;
if(OrderType() != type) continue; もし、OrderType() != type) continue;
if(OrderOpenTime()=endTime)continue。
openedAtBar++;
break;
return(openedAtBar)。
}
if(isCrossed == 1 && shortEma > mainshortEma && longEma > mainshortEma)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,1,Ask-StopLoss*Point,Ask+TakeProfit*Point,
"私のEA",12345,0,緑);
if(チケット>0)
{
if(オーダーセレクト(チケット,SELECT_BY_TICKET,MODE_TRADES))
Print("BUY order opened : ",OrderOpenPrice());
else Print("BUY注文の開始エラー :",GetLastError())。
return(0);
}
if(isCrossed == 2 && shortEma < mainshortEma && longEma < mainshortEma)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,1,Bid+StopLoss*Point,Bid-TakeProfit*Point,
"私のEA",12345,0,赤);
if(チケット>0)
{
if(オーダーセレクト(チケット,SELECT_BY_TICKET,MODE_TRADES))
Print("SELL order opened : ",OrderOpenPrice());
else Print("SELL注文の開始エラー :",GetLastError());
return(0);
return(0)。
}