السلام عليكم
كيف أضيف كود مع كود الشراء او البيع على سبيل المثال فى كود الشراء اريد ان اضيف كود لو السعر ارتفع 40 نقطة يبيع فورا
وايضا كود فى البيع لو السعر انخفض 40 نقطة يشترى فورا
وشكرا لكم
Printable View
السلام عليكم
كيف أضيف كود مع كود الشراء او البيع على سبيل المثال فى كود الشراء اريد ان اضيف كود لو السعر ارتفع 40 نقطة يبيع فورا
وايضا كود فى البيع لو السعر انخفض 40 نقطة يشترى فورا
وشكرا لكم
هكذا يكتب الكود ....
كود:double ma1;
double SL,TP;
datetime time0 ;
ma1=iMA(NULL,0,15,0,MODE_SMA,PRICE_CLOSE,1);
if (Close[1]>ma1 && time0!=Time[0] && orderstotal()<1){
SL=Ask-50*Point;
TP=Ask+50*Point;
OrderSend(Symbol(),OP_BUY,lots,Ask,3,SL,TP,"klk",MagicNumber,0,Blue);
}
time0 = Time[0] ;
/////
int orderstotal(){
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){
cnt++;
}
}
return(cnt);
}
السلام عليكم ورحمة الله وبركاته
بالنسبه لـ takeprofit \ Stoploss
ماهو الافضل والأصح عند تعريف نوع المتغير ؟ double او int
وهل يعقل ان يكون الهدف والستوب رقم عشري غير صحيح ؟؟
لأن وجدت بعض الاكسبريتات تجعل نوعها double
كيف التعامل مع الصفقات المكرره ؟ وعدم فتح اكثر من صفقه ؟
لدي مشكله هنا " فتح صفقات متكرره بٍكلا الإتجاهين "
أود جعله يفتح صفقه واحده فقط " بإتجاه واحد " + ولا يفتح " صفقه معاكسه للاتجاه "
يعني صفقه واحده وإتجاه واحد بدون فتح صفقه معاكسه
كود PHP:if( High[0] > High[1] && High[0] > High[2] && High[0] > High[3] && High[0] > High[4] && High[0] > High[5] )
{
if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*Point;}
if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*Point;}
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"Me",MagicNumber,0,Blue);
};
وفقكم الله
لن يظهر اي خطأ فقط راجع الاقواس وانتبه لتعريف المتغير datetime time0 خارج الدالة ستارت
كود:
double ma1;
double SL,TP;
ma1=iMA(NULL,0,5,0,MODE_SMA,PRICE_CLOSE,1);
if (Close[1]>ma1 && time0!=Time[0] && orderstotal()<1){
SL=Ask-500*Point;
TP=Ask+500*Point;
int t1 = OrderSend(Symbol(),OP_BUY,lots,Ask,3,SL,TP,"klk",MagicNumber,0,Blue);
time0 = Time[0] ;
}
int orderstotal(){
int c = 0 ;
for(int cnt = 0 ; cnt < OrdersTotal(); cnt++){
if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
c++;
}
return(c);
}
[QUOTE=msh3al;3049636]كيف التعامل مع الصفقات المكرره ؟ وعدم فتح اكثر من صفقه ؟
لدي مشكله هنا " فتح صفقات متكرره بٍكلا الإتجاهين "
أود جعله يفتح صفقه واحده فقط " بإتجاه واحد " + ولا يفتح " صفقه معاكسه للاتجاه "
يعني صفقه واحده وإتجاه واحد بدون فتح صفقه معاكسه
تعرف متغييرين من نوع Boolean مثلا GoBuy و GoSell
وتجعل شرط الشراءكود:bool Gobuy , Gosell ;
وعند تنفيذ امر الشراء ترجعها true لكي لايفتح صفقة شراء اخرى الا بعد بيع وهكذا الكودكود:if("some thing " && Gobuy == false) ;
ولا تنسى ان تعرف المتغيرين خاج الدالة ستارتكود:
bool Gobuy , Gosell ;
int start()
{
if( High[0] > High[1] && High[0] > High[2] && High[0] > High[3] && High[0] > High[4] && High[0] > High[5] )
{
if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*Point;}
if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*Point;}
if(Gobuy == false) ;
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"Me",MagicNumber,0,Blue);
Gobuy = true ;
Gosell = false ;
};
return(0);
}
الله يعطيك العافيه اخوي goldfile تسلم :asvc:
انحلت مشكلة " الصفقات المعاكسه "
لكن كيف يتم تحديد عدد الصفقات بنفس الاتجاه ؟
لأنه ما زال يفتح صفقات بنفس الاتجاه
الله يعطيك العافيه وشاكر لك
استعمل دالة تحسب عدد الصفقات المفتوحة هكذا
واضف شرط ان العدد يكون صفر لصفقات للشراءكود:
int ordersTotal(int type)
{
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()&&OrderType()==type){
cnt++;
}
}
}
return(cnt);
}
وكذلك للبيعكود:if("some thing " && ordersTotal(OP_BUY) == 0 ){
بالتوفيق
هلا ومرحبا .. شكراً لتجاوبك اخوي
قمت بتعريف الداله في void OnTick()
كود PHP:int ordersTotal(int type)
{
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()&&OrderType()==type){
cnt++;
}
}
}
return(cnt);
}
ثم اضفت الشرط
في شرط الشراء , فأصبح هكذا :كود PHP:&& ordersTotal(OP_BUY) == 0
كود PHP:if( High[0] > High[1] && High[0] > High[2] && High[0] > High[3] && High[0] > High[4] && High[0] > High[5] && ordersTotal(OP_BUY) == 0 )
لكن ظهر لك خطأ هنا :
الملف المرفق 455286
لايمكن ان تكون دالة وسط دالة
orderTotal دالة مستقلة ويجب ان تكون خارج الدالة void OnTick()