ممتاز ولكن هناك حل افضل
انت تبي تسمح بالشراء-تبي تسمح بالبيع - تبي تسمح بالبيع والشراء مع بعض - ورابعا ترفض البيع والشراءمعا
وعندك متغيرين SellToday BuyToday
وهدفك: اتدخل لايقاف عمليات البيع او الشراء بشكل يدوي في ظروف يصعب برمجتها
Printable View
الافضل اربعة اشياء على التشارت اي واحد تضغطه هو خيارك
مثلا ضغطت على الكائن-1 يجعل القيمتين ترو---الشراء مسموح-البيع مسموح
وبالتالي انت هنا تكتفي بالماوس بدلا من اصابع اليد لكتابة on - off وتحقق هدفك بشكل نموذجي
كود PHP:
string ALLOW_BUY_or_SELL="NONE";
bool SellToday = FALSE ;
bool BuyToday = FALSE ;
string sparam1;
void Creat_Label(string name, int x, int y, color clr)
{
ObjectCreate(name,OBJ_LABEL,0,0,0);
ObjectSet(name,OBJPROP_CORNER,0);
ObjectSet(name,OBJPROP_XDISTANCE,x);
ObjectSet(name,OBJPROP_YDISTANCE,y);
ObjectSetText(name,CharToStr(110),13,"Wingdings",clr);
ObjectCreate("sparam1",OBJ_LABEL,0,0,0);
ObjectSet("sparam1",OBJPROP_CORNER,0);
ObjectSet("sparam1",OBJPROP_XDISTANCE,15);
ObjectSet("sparam1",OBJPROP_YDISTANCE,40);
ObjectSetText("sparam1",sparam1,12,"Times New Roman",clrWhite);
}
//+------------------------------------------------------------------+
int OnInit()
{
//--- create timer
EventSetTimer(1);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy timer
EventKillTimer();
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
if(ALLOW_BUY_or_SELL=="NONE") color clr=clrRed; else clr=clrOrange;
Creat_Label("NONE", 15, 20, clr);
if(ALLOW_BUY_or_SELL=="ALLOW_BUY_ONLY") clr=clrRed; else clr=clrOrange;
Creat_Label("ALLOW_BUY_ONLY", 35, 20, clr);
if(ALLOW_BUY_or_SELL=="ALLOW_SELL_ONLY") clr=clrRed; else clr=clrOrange;
Creat_Label("ALLOW_SELL_ONLY", 55, 20, clr);
if(ALLOW_BUY_or_SELL=="ALLOW_BOTH_BUY_and_SELL") clr=clrRed; else clr=clrOrange;
Creat_Label("ALLOW_BOTH_BUY_and_SELL", 75, 20, clr);
}
//+------------------------------------------------------------------+
//| ChartEvent function |
//+------------------------------------------------------------------+
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam)
{
if(id==CHARTEVENT_OBJECT_CLICK)
{
sparam1=sparam;
if(sparam=="NONE")
{
ALLOW_BUY_or_SELL="NONE"; SellToday = FALSE ; BuyToday = FALSE ;
}
if(sparam=="ALLOW_BUY_ONLY")
{
ALLOW_BUY_or_SELL="ALLOW_BUY_ONLY"; SellToday = TRUE ; BuyToday = FALSE ;
}
if(sparam=="ALLOW_SELL_ONLY")
{
ALLOW_BUY_or_SELL="ALLOW_SELL_ONLY"; SellToday = FALSE ; BuyToday = TRUE ;
}
if(sparam=="ALLOW_BOTH_BUY_and_SELL")
{
ALLOW_BUY_or_SELL="ALLOW_BOTH_BUY_and_SELL"; SellToday = TRUE ; BuyToday = TRUE ;
}
}
}
السلام وعليكم ورحمة الله وبركاته
طلبي هو كود اضعه بداخل الاكسبيرت الذي اعمل عليه مثلاً عندما اغلاق اي صفقه بالحساب يدوي يقوم هو بدوره باغلاق كل صفقات الحساب دفعه واحده هل يمكن ذلك اتمنى
سلام عليكم مستر دولار
اريد المساعد في تحديد الهدف وتيك بروفيت و ترينغ ستوب عن طريق موشر ِATR
اكواد يلي انا ساويتها
كود stop lose
كود Takeprofitكود PHP:
SLss =pricesell + (iATR(NULL,NULL,ATR,1) * Stoploss);
كود TrailingStopكود PHP:
TPss = pricesell - (iATR(NULL,NULL,ATR,1) * Takeprofit)
المشكله عندي في ترينيغ ستوب طبعا هاد ترينيغ ستوب مخفيكود PHP:
void MoveTrailingStop()
{
bool s;
for(int cnt=0;cnt<OrdersTotal();cnt++)
{
s=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
string sy=OrderSymbol();
int tk=OrderTicket(),
ot=OrderType(),
mn=OrderMagicNumber();
double op=OrderOpenPrice(),
sl=OrderStopLoss(),
tp=OrderTakeProfit();
double tt=NormalizeDouble((iATR(NULL,NULL,ATR,1) * TrailingStop)/point,0);
if(sy==Symbol()&&mn==Magicnumber&&ot<=OP_SELL)
{
if(ot==OP_BUY)
{
if(NormalizeDouble(Ask-( TSstep *point),Digits)>NormalizeDouble((op+(tt*point)),Digits))
{
if((NormalizeDouble(sl,Digits)<NormalizeDouble(Bid-(tt*point),Digits))||(sl==0))
{
GlobalVariableSet("TS"+OrderTicket(),Bid-tt*point);
}
}
}
else
{
if(NormalizeDouble(Bid+( TSstep *point),Digits)<NormalizeDouble((op-(tt*point)),Digits))
{
if((NormalizeDouble(sl,Digits)>(NormalizeDouble(Ask+(tt*point),Digits)))||(sl==0))
{
GlobalVariableSet("TS"+OrderTicket(),Ask+tt*point);
}
}
}
}
}
}
//-------------------
void CloseHidenTrailingStop()
{
bool close;
for(int Ki=OrdersTotal()-1;Ki>=0;Ki--)
{
bool select=OrderSelect(Ki,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magicnumber)
{
if(OrderType()==OP_BUY&&GlobalVariableGet("TS"+OrderTicket())!=0)
{
if(Bid<=GlobalVariableGet("TS"+OrderTicket()))
{
close=OrderClose(OrderTicket(),OrderLots(),Bid,3*D);
GlobalVariableDel("TS"+OrderTicket());
}
}
if(OrderType()==OP_SELL&&GlobalVariableGet("TS"+OrderTicket())!=0)
{
if(Ask>=GlobalVariableGet("TS"+OrderTicket()))
{
close=OrderClose(OrderTicket(),OrderLots(),Ask,3*D);
GlobalVariableDel("TS"+OrderTicket());
}
}
}
}
}
دالة استعاء ترينيغ ستوب
ولا كانو موجود ترينيغ ستوب يغلق صفقه على خساره مره بتطلع order send error 130كود PHP:
if(TrailingStop>0){MoveTrailingStop();CloseHidenTrailingStop();}
ارجوا مساعده في في هذه اكواد وانا كان هناك خطاء يرجى اخباري بيه وشكرا
السلام عليكم ورحمته الله وبركاته
استاذنا مستر دولار ..
انا وضعت كود تشغيل الاكسبيرت على الديمو فقط
ولكن للأسف الصفقات تشتغل في الحقيقي مع ظهور التنبيه فقط
ولكن الصفقات شغالة !؟
ممكن حل بحيث الصفقات لا تعمل ايضا في الحقيقي
كود PHP:
if(!IsDemo()){Alert("EA ENDING"); return(0);}
هل تشوفون سر الفوركس برمجي ؟؟
السلام عليكم ورحمة الله وبركاته
ارجو المساعده من اهل الاختصاص بشان صيغة عمل الاكسبيرت على رقم حساب محدد
يفضل كتابة الصيغه برقم الحساب 34567