وكمان فى كود تانى اسهل من الاول
كود PHP:double point;
int init()
{
if(Digits==5||Digits==4)
{
point=0.0001;
}
else{
point=0.01;
}
return(0);
}
وكمان فى كود تانى اسهل من الاول
كود PHP:double point;
int init()
{
if(Digits==5||Digits==4)
{
point=0.0001;
}
else{
point=0.01;
}
return(0);
}
شباب
معلش طلب غريب شوية
ياريت اي حد عنده اي مؤشرخ خارجي يكون عبارة عن خط بيظهر علي الشارت و مش مهم يكون بيتحسب ازاي او اي حاجة
السلام عليكم
انا عملت دالة علشان فتح صفقات شراء
ودالة علشان فتح صفقات بيع
انا عايز اعمل مع كل تقاطع يفتح صفقة شراء او بيع
ويكون عدد صفقات لكل نوع شراء او بيع محدد
مثلا
فى لوحة اعدادات الاكسبيرت
وضعت 2 عدد صفقات الشراء
واوضعت 2 عدد فى صفقات البيع
عايز الاكسبيرت مع كل تقاطع يفتح صفقة واحدة وعند التقاطع الثانى يفتح صفقة الاخرى
ارجو ان وضحت الصورة
المهم انا عملت هذا
ومش عارف صح كدا ولا خطا
ارجو المساعدة
وجزاكم الله خير
كود PHP:int ordestotal1()
{
int buy=0;
for(int a=0;a<OrdersTotal();a++){
OrderSelect(a,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&MagicNumber==OrderMagicNumber()&&OP_BUY==OrderType()){
buy++;
}
}
return(buy);
}
int ordestotal2()
{
int sell=0;
for(int b=0;b<OrdersTotal();b++){
OrderSelect(b,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&MagicNumber==OrderMagicNumber()&&OP_SELL==OrderType()){
sell++;
}
}
return(sell);
}
طيب انت ممكن تكتب في كود استدعاء المؤشر رقم خط واحد بس يعني مثلا 1 للاحمر 2 للاخضر 0 للذهبي
وعلي العموم خد المؤشر ده
Gann Hi-lo Activator SSL
السلام عليكم اخى الكريم اسامة
ارجو المساعدة
عايز الطريقة البرمجية
لفتح صفقة شراء او بيع مع كل تقاطع
ويتم تحديد عدد الصفقات فى لوحة اعدادات الاكسبيرت
وجزاك الله خير
بص معايا علي الكود ده اولا انت هتحتاج داله تعرفك عدد الصفقات المفتوحة شراء وداله لصفقات البيع
طيب هنستخدمها ازاي ؟ اقولك هنحطها في شروط البيع والشراء مثالكود PHP:int buyorders(){
int buy=0;
for(int i =0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderType()==OP_BUY && magic==OrderMagicNumber()){
buy++;
}
}
return(buy);
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
int sellorders(){
int sell=0;
for(int i =0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderType()==OP_SELL && magic==OrderMagicNumber()){
sell++;
}
}
return(sell);
}
انا كده حذفت orderstotal() وكتبت بدلها اسم الدالة اللي انا عايزها لصفقات الشراءكود PHP:if ( gann1>gann2&&rsi<50&& buyorders()<5)
طيب في حاجة كمان لو انا سيبت رقم 5 زي ماهو لما الشرط هيتحقق هيفتح 5 صفقات في وقت واحد نعمل ايه؟
هنعرف متغير مثلا اسمه int lastorder;
وقيمته المبدأية طبعا صفر
ونكتب في شروط الشراء ان lastorder لاتساوي 1 بالشكل ده
المتغير lastorder قيمته صفر يعني هيشتري لانه لا يساوي 1 الخطوة التانيةكود:if ( gann1>gann2&&rsi<50&& lastorder!=1&& buyorders()<5)
نكتب في جسد الشرط مع امر الشراء مثلا ان الشرط لو تحقق وفتح شراء اجعل lastorder تساوي 1مثال
بعد كده نكتب في شرط البيعكود PHP:OrderSend (Symbol(),OP_BUY,lot,Ask,0,sl,tp,"rain_man",magic,0,Blue);
lastorder=1;
وبرضه هنخليه يغير قيمة lastorder الي 1- مثالكود PHP:if (gann1<gann2&&rsi>50&& lastorder!=-1&& sellorders()<5)
الفكرة ايه ان رقم 5 ممكن نجعله متغير خارجي مثلا MaxOrdersكود PHP:OrderSend (Symbol(),OP_SELL,lot,Bid,0,sl,tp,"rain_man",magic,0,Red);
lastorder=-1;
ثانيا دلوقتي لو فتح شراء قيمة lastorder هتتغير وبالتالي مش هايفتح تاني من نفس المكان شراء
لازم ينتظر تقاطع بيع وفتح امر بيع حتي ترجع قيمة lastorder من 1 الي 1-
وبكده يدخل من كل تقاطع مرة واحده ورقم 5 مثلا هيبقي عدد 5 صفقات شراء لـ 5 تقاطعات شراء ولو حصل تقاطع شراء تاني مش هيفتح لانه فتح خلاص 5 شراء
مثال للكود النهائي
طبعا المؤشرات عندي لا تعتمد علي التقاطعات لكن الفكرة واحدة
طبعا lastorder لازم نعرفها خارج الدوال كلهاكود:if ( gann1>gann2&&rsi<50&& lastorder!=1&& buyorders()<maxordersbuy)
{
if (takeprofit==0){tp=0;}else{tp =Ask+takeprofit*pt;}
if (stoplose==0){sl=0;}else{sl =Ask-stoplose*pt;}
OrderSend (Symbol(),OP_BUY,lot,Ask,0,sl,tp,"rain_man",magic,0,Blue);
lastorder=1;
}
if (gann1<gann2&&rsi>50&& lastorder!=-1&& sellorders()<maxorderssell)
{
if(takeprofit==0){tp=0;}else{tp=Bid-takeprofit*pt;}
if(stoplose==0){sl=0;}else{sl=Bid+stoplose*pt;}
OrderSend (Symbol(),OP_SELL,lot,Bid,0,sl,tp,"rain_man",magic,0,Red);
lastorder=-1;
}
وmaxordersbuy و maxorderssell دي متغيرات خارجية نتحكم في عددها
الاكواد في الاكسبرت كانت كده
بعد التعديل بقي كدهكود PHP:if(mov1>mov2&&mov3<mov4&&rsi>50&&lastorder!=1&&ordestotal1()<TotalOpenBuy)//نفس المشكلة
{
if(StopLoss==0){st=0;}else{st=Ask-StopLoss*point;}
if(TakeProfit==0){ta=0;}else{ta=Ask+TakeProfit*point;}
OrderSend(Symbol(),OP_BUY,lot,Ask,5,st,ta,"",MagicNumber,0,Blue);
}
if(mov2>mov1&&mov4<mov3&&rsi<50&&lastorder!=-1&&ordestotal2()<TotalOpenSell)//انا عايز يفتح صفقة واحدة مع كل تقاطع وعلى حسب عدد الصفقات
{
if(StopLoss==0){st=0;}else{st=Bid+StopLoss*point;}
if(TakeProfit==0){ta=0;}else{ta=Bid-TakeProfit*point;}
OrderSend(Symbol(),OP_SELL,lot,Bid,5,st,ta,"",MagicNumber,0,Red);
}
جرب كده وقولي النتيجةكود PHP:if(mov1>mov2&&mov3<mov4&&rsi>50&&lastorder!=1&&ordestotal1()<TotalOpenBuy)//نفس المشكلة
{
if(StopLoss==0){st=0;}else{st=Ask-StopLoss*point;}
if(TakeProfit==0){ta=0;}else{ta=Ask+TakeProfit*point;}
OrderSend(Symbol(),OP_BUY,lot,Ask,5,st,ta,"",MagicNumber,0,Blue);
lastorder=1;
}
if(mov2>mov1&&mov4<mov3&&rsi<50&&lastorder!=-1&&ordestotal2()<TotalOpenSell)//انا عايز يفتح صفقة واحدة مع كل تقاطع وعلى حسب عدد الصفقات
{
if(StopLoss==0){st=0;}else{st=Bid+StopLoss*point;}
if(TakeProfit==0){ta=0;}else{ta=Bid-TakeProfit*point;}
OrderSend(Symbol(),OP_SELL,lot,Bid,5,st,ta,"",MagicNumber,0,Red);
lastorder=-1;
}