bool isCloseLastPosByStop(string sy, int op, int mn, double& ll)
{
double pt;
datetime t;
int dg, i, j=-1, k=OrdersHistoryTotal()-1;
for (i=k; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderMagicNumber()!=mn) continue; // если магик не тот, переходим к следующемуif (OrderSymbol()!=sy) continue; // если символ не тот, переходим к следующемуif (OrderType()!=op) continue; // если тип не тот, переходим к следующемуif (t<OrderCloseTime())
{
t=OrderCloseTime();
j=i;
}
}
}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY))
{
dg=MarketInfo(OrderSymbol(), MODE_DIGITS); // количество знаков в цене символа ордера
pt=MarketInfo(OrderSymbol(), MODE_POINT); // размер пункта инструмента в валюте котировки ордераif (MathAbs(OrderClosePrice()-OrderStopLoss())< 0.5*pt) // Если закрыт по стопу
{
ll=OrderLots(); // записываем количество лотов в ордере, закрытом по стопуreturn(true); // возвращаем истину
}
}
return(False); // возвращаем ложь (позиции нету, либо не по стопу)
}
' - variable not defined C:\Program Files Alpari NZ MT4experts ###PREDICATED LOT.mq4 (47, 39) http://clip2net.com/s/61vFZH
Start以前から定義されていたが。
double Magic, Lot;
int start()
{
double Price=iOpen (Symbol (),0,0);
int last_order_bar = 0;
int ot = OrdersTotal();
if (ot>0) //если есть ордера в рынке
{
if (OrderSelect (ot-1,SELECT_BY_POS))
if (OrderType ()==OP_BUY || OrderType ()==OP_SELL )
last_order_bar = iBarShift (Symbol (),0,OrderOpenTime ());
}
int last_hist_order_bar = 0;
int oht = OrdersHistoryTotal();
if (oht>0)
{
if (OrderSelect (oht-1,SELECT_BY_POS, MODE_HISTORY))
if (OrderType ()==OP_BUY || OrderType ()==OP_SELL)
last_hist_order_bar = iBarShift (Symbol (),0,OrderOpenTime ());
}
if (ot==0)
//if (ot==0 || last_order_bar>0) //если ордеров нет либо последний открыт не на текущем баре // if (oht==0 || last_hist_order_bar>0) if (Bid ==Price)
//=============================================================== if(((Open[1]-Close[1])>100*Point)&&((Open[1]-Close[1])<120*Point))
if(((High[1]-Open[1])>40*Point)&&((High[1]-Open[1])<60*Point))
if(((Close[1]-Low[1])>40*Point)&&((Close[1]-Low[1])<60*Point))
//============================================================Lot= MarketInfo(Symbol(), MODE_MINLOT); if (isCloseLastPosByStop(Symbol(), OP_BUY, Magic, Lot))
{
Lot=Lot*2;
OrderSend(Symbol(),OP_SELL,Lot,Bid,1,Ask+1500*Point,Ask-300*Point,"jfh",123 );
}
else
{
Lot=0.1;
OrderSend(Symbol(),OP_SELL,1,Bid,Lot,Ask+1500*Point,Ask-300*Point,"jfh",123 );
}
return(0);
}
//============================================================ bool isCloseLastPosByStop(string sy, int op, int mn, double &ll)
{
double pt;
datetime t;
int dg, i, j=-1, k=OrdersHistoryTotal()-1;
for (i=k; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderMagicNumber()!=mn) continue; // если магик не тот, переходим к следующемуif (OrderSymbol()!=sy) continue; // если символ не тот, переходим к следующемуif (OrderType()!=op) continue; // если тип не тот, переходим к следующемуif (t<OrderCloseTime())
{
t=OrderCloseTime();
j=i;
}
}
}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY))
{
dg=MarketInfo(OrderSymbol(), MODE_DIGITS); // количество знаков в цене символа ордера
pt=MarketInfo(OrderSymbol(), MODE_POINT); // размер пункта инструмента в валюте котировки ордераif (MathAbs(OrderClosePrice()-OrderStopLoss())< 0.5*pt) // Если закрыт по стопу
{
ll=OrderLots(); // записываем количество лотов в ордере, закрытом по стопуreturn(true); // возвращаем истину
}
}
return(False); // возвращаем ложь (позиции нету, либо не по стопу)
}
double Magic, Lot;
int start()
{
double Price=iOpen (Symbol (),0,0);
int last_order_bar = 0;
int ot = OrdersTotal();
if (ot>0) //если есть ордера в рынке
{
if (OrderSelect (ot-1,SELECT_BY_POS))
if (OrderType ()==OP_BUY || OrderType ()==OP_SELL )
last_order_bar = iBarShift (Symbol (),0,OrderOpenTime ());
}
int last_hist_order_bar = 0;
int oht = OrdersHistoryTotal();
if (oht>0)
{
if (OrderSelect (oht-1,SELECT_BY_POS, MODE_HISTORY))
if (OrderType ()==OP_BUY || OrderType ()==OP_SELL)
last_hist_order_bar = iBarShift (Symbol (),0,OrderOpenTime ());
}
if (ot==0)
//if (ot==0 || last_order_bar>0) //если ордеров нет либо последний открыт не на текущем баре // if (oht==0 || last_hist_order_bar>0) if (Bid ==Price)
//=============================================================== if(((Open[1]-Close[1])>100*Point)&&((Open[1]-Close[1])<120*Point))
if(((High[1]-Open[1])>40*Point)&&((High[1]-Open[1])<60*Point))
if(((Close[1]-Low[1])>40*Point)&&((Close[1]-Low[1])<60*Point))
//============================================================
Lot= MarketInfo(Symbol(), MODE_MINLOT);
if (isCloseLastPosByStop(Symbol(), OP_BUY, Magic, Lot))
{
Lot=Lot*2;
OrderSend(Symbol(),OP_SELL,Lot,Bid,1,Ask+1500*Point,Ask-300*Point,"jfh",123 );
}
else
{
Lot=0.1;
OrderSend(Symbol(),OP_SELL,1,Bid,Lot,Ask+1500*Point,Ask-300*Point,"jfh",123 );
}
return(0);
}
//============================================================ bool isCloseLastPosByStop(string sy, int op, int mn, double &ll)
{
double pt;
datetime t;
int dg, i, j=-1, k=OrdersHistoryTotal()-1;
for (i=k; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderMagicNumber()!=mn) continue; // если магик не тот, переходим к следующемуif (OrderSymbol()!=sy) continue; // если символ не тот, переходим к следующемуif (OrderType()!=op) continue; // если тип не тот, переходим к следующемуif (t<OrderCloseTime())
{
t=OrderCloseTime();
j=i;
}
}
}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY))
{
dg=MarketInfo(OrderSymbol(), MODE_DIGITS); // количество знаков в цене символа ордера
pt=MarketInfo(OrderSymbol(), MODE_POINT); // размер пункта инструмента в валюте котировки ордераif (MathAbs(OrderClosePrice()-OrderStopLoss())< 0.5*pt) // Если закрыт по стопу
{
ll=OrderLots(); // записываем количество лотов в ордере, закрытом по стопуreturn(true); // возвращаем истину
}
}
return(False); // возвращаем ложь (позиции нету, либо не по стопу)
}
double Magic, Lot;
int start() {
double Price=iOpen(Symbol(),0,0);
int last_order_bar=0;
int ot=OrdersTotal();
if (ot>0) {
if (OrderSelect(ot-1,SELECT_BY_POS))
if (OrderType()==OP_BUY || OrderType()==OP_SELL) last_order_bar=iBarShift(Symbol(),0,OrderOpenTime());
}
int last_hist_order_bar=0;
int oht=OrdersHistoryTotal();
if (oht>0) {
if (OrderSelect(oht-1,SELECT_BY_POS, MODE_HISTORY))
if (OrderType ()==OP_BUY || OrderType ()==OP_SELL) last_hist_order_bar=iBarShift(Symbol(),0,OrderOpenTime())
}
if (ot==0)
if (Bid==Price)
//=============================================================== if(((Open[1]-Close[1])>100*Point)&&((Open[1]-Close[1])<120*Point))
if(((High[1]-Open[1])>40*Point)&&((High[1]-Open[1])<60*Point))
if(((Close[1]-Low[1])>40*Point)&&((Close[1]-Low[1])<60*Point))
//============================================================
Lot=MarketInfo(Symbol(), MODE_MINLOT);
if (isCloseLastPosByStop(Symbol(), OP_BUY, Magic, Lot)) {
Lot=Lot*2;
OrderSend(Symbol(),OP_SELL,Lot,Bid,1,Ask+1500*Point,Ask-300*Point,"jfh",123 );
}
else {
Lot=0.1;
OrderSend(Symbol(),OP_SELL,1,Bid,Lot,Ask+1500*Point,Ask-300*Point,"jfh",123 );
}
return(0);
}
//+----------------------------------------------------------------------------+bool isCloseLastPosByStop(string sy, int op, int mn, double &ll) {
double pt;
int t, dg, i, j=-1, k=OrdersHistoryTotal()-1;
for (i=k; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderMagicNumber()!=mn) continue; // если магик не тот, переходим к следующемуif (OrderSymbol()!=sy) continue; // если символ не тот, переходим к следующемуif (OrderType()!=op) continue; // если тип не тот, переходим к следующемуif (t<OrderCloseTime()) {
t=OrderCloseTime();
j=i;
}
}
}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
dg=MarketInfo(OrderSymbol(), MODE_DIGITS); // количество знаков в цене символа ордера
pt=MarketInfo(OrderSymbol(), MODE_POINT); // размер пункта инструмента в валюте котировки ордераif (MathAbs(OrderClosePrice()-OrderStopLoss())<0.5*pt) { // Если закрыт по стопу
ll=OrderLots(); // записываем количество лотов в ордере, закрытом по стопуreturn(true); // возвращаем истину
}
}
return(False); // возвращаем ложь (позиции нету, либо не по стопу)
}
//+----------------------------------------------------------------------------+
なぜ削除するのか。そのままにしておけば、すべてがうまくいったはずだ。
この謎の記号を付けてみたが......結果は同じ......関数が動作しない
どうだろう......このサインは何を意味するのだろう......。教科書に書いてあるようなことは思いつかない。
参照で転送することで、パラメータを修正(変更)することができる
参照転送により、パラメータの修正(変更)が可能になる
ありがとうございます。 今後の参考にさせていただきます。
しかし、なぜその機能が働かないのでしょうか?
ご指摘いただけると幸いです。ありがとうございます。 今後の参考にさせていただきます。
しかし、なぜ機能が働かないのでしょうか?
ご指摘いただけると幸いです。正しい方向性を示してくれるとありがたいのですが。
リターン最小ロットも
返却されました。
コンパイルすると、Lot変数が定義されていないとのエラーが発生します。
' - variable not defined C:\Program Files Alpari NZ MT4experts ###PREDICATED LOT.mq4 (47, 39)
http://clip2net.com/s/61vFZH
Start以前から定義されていたが。
返却されました。
コンパイルすると、Lot変数が定義されていないとのエラーが発生します。
' - variable not defined C:\Program Files Alpari NZ MT4experts ###PREDICATED LOT.mq4 (47, 39)
http://clip2net.com/s/61vFZH
Startの前に定義したことがありますが。
すべてのコードが必要です
すべてのコードが必要です
すべてのコードが必要です
注文がストップで閉じられた後、次の注文が、最後にストップで閉じられたときの数量と同じ数量で開く必要があります。
に乗じた順序
そして、最後の注文が他の理由(ストップではない)で閉じられた場合、ポジション量は 0.1になるはずです。返却されました。
コンパイルすると、Lot変数が定義されていないとのエラーが発生します。
' - variable not defined C:\Program Files Alpari NZ MT4experts︓PREDITIONS.mq4 (47, 39)
http://clip2net.com/s/61vFZH
しかし、それはStartの前に定義されています。
コンパイルされます。どうやら、あなたの論理はまったくダメなようだ......。もちろん、目を通したわけではありません。エラーがないかどうかだけ確認しました。
datetimeはintと同じです。