بارك الله فيك أستاذي الكريم
للأسف لم تظهر أسعار الخطوط على الشارت
والأسعار بالباكتيست تظهر فقط لمرة واحدة وهي خاصة بالمؤشر
كل ما أريده من الاكسبيرت أن يضع أمرين BuyStop و SellStop بالخط بمجرد أن يلمسه السعر وهكذا في كل ملامسة لأي خط من خطوط المؤشر
المشكلة أنه يضع فقط بخط الوسط N أما باقي الخطوط لا يضع الأمرين
مؤشر الخطوط بالمرفقات للمراجعة :asvc:
كود لجزء من الشروط لخطوط H
[PHP]void OncePerBar()
{
if (BarTime < Time[0])
{
// we have a new bar opened
BarTime = Time[0]; // keep the new bar open time
TechnicalAnalysis();
}
}
void TechnicalAnalysis()
{
for(int i=1;i<=20;i++)
{
double LineH=ObjectGet("Hi"+i,OBJPROP_PRICE1);
Print(LineH);
if ((Open[1]<=LineH&&Close[1]>=LineH) || (Open[1]>=LineH&&Close[1]<=LineH))
{
LimitOpenOrders();
}
}
}
void LimitOpenOrders()
{
int count = 0;
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol())
if (OrderMagicNumber() == MagicNo)
{
count++;
}
}
else
{
Print("OrderSend() error - ", ErrorDescription(GetLastError()));
}
if (count < OpenOrdersLimit)
{
IfOrderDoesNotExist1();
IfOrderDoesNotExist2();
}
}
void IfOrderDoesNotExist1()
{
bool exists = false;
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() != MagicNo)
{
exists = true;
}
}
else
{
Print("OrderSelect() error - ", ErrorDescription(GetLastError()));
}
if (exists == false)
{
SellOrderH();
}
}
void IfOrderDoesNotExist2()
{
bool exists = false;
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() != MagicNo)
{
exists = true;
}
}
else
{
Print("OrderSelect() error - ", ErrorDescription(GetLastError()));
}
if (exists == false)
{
BuyOrderH();
}
}[/PHP]
ثم دالة الشراء والبيع المعلقين
[PHP]void BuyOrderH()
{
for( int i=1;i<=20;i++)
{
double LineH=ObjectGet("Hi"+i,OBJPROP_PRICE1);
Print(LineH);
double price = (NormalizeDouble(LineH, NDigits) + (SellStep*PipValue*Point));
double SL = price - Stoploss*PipValue*Point;
if (Stoploss == 0) SL = 0;
double TP = price + Takeprofit*PipValue*Point;
if (Takeprofit == 0) TP = 0;
int Tries;
int ticket = -1;
if (ECNBroker)
{
ticket = OrderSend(Symbol(), OP_BUYSTOP, Lots, price, Slippage, 0, 0, "Kira-h", MagicNo, 0, Blue);
if(ticket>-1 && Tries<10)
{
OrderSelect(ticket, SELECT_BY_TICKET);
OrderModify(ticket, OrderOpenPrice(), SL, TP, 0, Blue);
Tries++;Sleep(1000);
}
}
else
ticket = OrderSend(Symbol(), OP_BUYSTOP, Lots, price, Slippage, SL, TP, "Kira-h", MagicNo, 0, Blue);
}
}
void SellOrderH()
{
for( int i=1;i<=20;i++)
{
double LineH=ObjectGet("Hi"+i,OBJPROP_PRICE1);
Print(LineH);
double price = (NormalizeDouble(LineH, NDigits) - (SellStep*PipValue*Point));
double SL = price + Stoploss*PipValue*Point;
if (Stoploss == 0) SL = 0;
double TP = price - Takeprofit*PipValue*Point;
if (Takeprofit == 0) TP = 0;
int Tries;
int ticket = -1;
if (ECNBroker)
{
ticket = OrderSend(Symbol(), OP_SELLSTOP, Lots, price, Slippage, 0, 0, "Kira-h", MagicNo, 0, Red);
if(ticket>-1 && Tries<10)
{
OrderSelect(ticket, SELECT_BY_TICKET);
OrderModify(ticket, OrderOpenPrice(), SL, TP, 0, Blue);
Tries++;Sleep(1000);
}
}
else
ticket = OrderSend(Symbol(), OP_SELLSTOP, Lots, Bid, Slippage, SL, TP, "Kira-h", MagicNo, 0, Red);
}
}[/PHP]
بانتظارك أستاذي الغالي :eh_s(7):