جمعة مباركة على الجميع
استفسار اجد احيانا في اعدادات مؤشرات البايفوت اعدادات خارجية مثل هذه اموجودة في الصورة المرفقة هل ممكن ان تشرحوا لي كيفية استخدامهاالصحيح والتوقيت الصحييح ؟
Printable View
جمعة مباركة على الجميع
استفسار اجد احيانا في اعدادات مؤشرات البايفوت اعدادات خارجية مثل هذه اموجودة في الصورة المرفقة هل ممكن ان تشرحوا لي كيفية استخدامهاالصحيح والتوقيت الصحييح ؟
السلام عليكم ورحمة الله وبركاته
جمعه مباركة للجميع
السلام عليكم
ممكن مساعدة في دالة المضاعفات بحيث لو اغلقت
الصفقة على خسارة يكون الدخول في الصفقة التي بعدها
بمضاعف الى ان تاتي صفقة موجبة فيبدا من جديد
وعليكم السلام ورحمة الله وبركاته
أسهل حل هو أن تجعل دالة حساب عدد الصفقات المغلقه تحسب آخر صفقات مغلقه خاسره بالتالي إذا كانت آخر صفقة مغلقه رابحه فسوف يكون عدد الصفقات الخاسره = 0 وبالتالي يبدأ من جديد
مثال
ولن تحتاج الدالة التي تعود بقيمة الربح أو الخسارهكود PHP:int closedorderno(){
int cnt=0;
for(int i =OrdersHistoryTotal()-1;i>=0;i--){
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)){
if(OrderSymbol()==Symbol()&& MagicNumber==OrderMagicNumber() ){
if(OrderProfit()<0)cnt++;
else return(cnt);
}
}
}
return(cnt);
}
لكن قم بتعديل بسيط فقط في دالة حساب حجم اللوت بأن تضع خيار إذا كان عدد الصفقات الخاسره = 0
كود PHP:double new(){
double newLot;
double A=closedorderno();
if(A==0)newLot=FirstLot;
if(A==1)newLot=Lot2;
if(A==2)newLot=Lot3;
if(A==3)newLot=Lot4;
if(A==4)newLot=Lot5;
if(A==5)newLot=Lot6;
if(A==6)newLot=Lot7;
if(A==7)newLot=Lot8;
if(A==8)newLot=Lot9;
if(A==9)newLot=Lot10;
if(A==10)newLot=Lot11;
if(A==11)newLot=Lot12;
if(A==12)newLot=Lot13;
if(A==13)newLot=Lot14;
if(A==14)newLot=Lot15;
return(newLot);
}
LocalTimeZone الفرق بين توقيتك المحلي وتوقيت البروكر إذا أردت حساب اليوم مثلا بناء على بداية ونهاية منطقتك
DestTimeZone عدد ساعات الفرق بين توقيت جرينتش وبين التوقيت الجديد الذي قمت بتحديده بناء على المتغير السابق
GMtShift الفرق بين توقيت البروكر وتوقيت جرينتش حتى تجعل اليوم يبدأ وينتهي مع توقيت جرينتش
الأفضل ترك الخيار الأول والثاني بدون تعديل والتعامل مع الخيار الثالث لجعل بداية اليوم مع توقيت جرينتش
وعليكم السلام ورحمة الله وبركاته
سوف تقوم بعمل داله لمعرفة حجم آخر صفقه رابحه أو خساره
وداله لمعرفة حجم لوت آخر صفقهكود PHP:double LastOrderProfit()
{
for(int i=OrdersHistoryTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
return(OrderProfit());
}
}
return(0);
}
ثم ستضع في شروط فتح الصفقهكود PHP:double LastOrderLots()
{
for(int i=OrdersHistoryTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
return(OrderLots());
}
}
return(0);
}
كود PHP:if(LastOrderProfit()<0)NewLot=LastOrderLots9)*2;
شكرا استاذ اسامة بارك الله فيك وجعل هذا العمل في ميزان حسناتك
عملت اكسبرت فكرته يفتح صفقة باتجاه واذا ارتد السعر بعدد نقاط معين يقوم بفتح صفقة في الاتجاه الاخر وهكذاكود PHP:
#include <stdlib.mqh>
#include <WinUser32.mqh>
// exported variables
extern double SellLots11 = 0.01;
extern int SellStoploss11 = 0;
extern int SellTakeprofit11 = 40;
extern double BuyLots13 = 0.01;
extern int BuyStoploss13 = 0;
extern int BuyTakeprofit13 = 30;
extern double SellLots15 = 0.01;
extern int SellStoploss15 = 0;
extern int SellTakeprofit15 = 20;
// local variables
double PipValue=1; // this variable is here to support 5-digit brokers
bool Terminated = false;
string LF = "\n"; // use this in custom or utility blocks where you need line feeds
int NDigits = 4; // used mostly for NormalizeDouble in Flex type blocks
int ObjCount = 0; // count of all objects created on the chart, allows creation of objects with unique names
int current = 0;
int init()
{
NDigits = Digits;
if (false) ObjectsDeleteAll(); // clear the chart
Comment(""); // clear the chart
}
// Expert start
int start()
{
if (Bars < 10)
{
Comment("Not enough bars");
return (0);
}
if (Terminated == true)
{
Comment("EA Terminated.");
return (0);
}
OnEveryTick1();
}
void OnEveryTick1()
{
if (true == false && false) PipValue = 10;
if (true && (NDigits == 3 || NDigits == 5)) PipValue = 10;
IfOrderDoesNotExist10();
}
void IfOrderDoesNotExist10()
{
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() == 1)
{
exists = true;
}
}
else
{
Print("OrderSelect() error - ", ErrorDescription(GetLastError()));
}
if (exists == false)
{
SellOrder11();
}
}
void SellOrder11()
{
double SL = Bid + SellStoploss11*PipValue*Point;
if (SellStoploss11 == 0) SL = 0;
double TP = Bid - SellTakeprofit11*PipValue*Point;
if (SellTakeprofit11 == 0) TP = 0;
int ticket = -1;
if (true)
ticket = OrderSend(Symbol(), OP_SELL, SellLots11, Bid, 7, 0, 0, "My Expert", 1, 0, Red);
else
ticket = OrderSend(Symbol(), OP_SELL, SellLots11, Bid, 7, SL, TP, "My Expert", 1, 0, Red);
if (ticket > -1)
{
if (true)
{
OrderSelect(ticket, SELECT_BY_TICKET);
bool ret = OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0, Red);
if (ret == false)
Print("OrderModify() error - ", ErrorDescription(GetLastError()));
}
IfOrderDoesNotExist12();
}
else
{
Print("OrderSend() error - ", ErrorDescription(GetLastError()));
}
}
11111111111111111vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
void IfOrderDoesNotExist12()
{
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() == 2)
{
exists = true;
}
}
else
{
Print("OrderSelect() error - ", ErrorDescription(GetLastError()));
}
if (exists == false)
{
BuyOrder13();
}
}
void BuyOrder13()
{
double SL = Ask - BuyStoploss13*PipValue*Point;
if (BuyStoploss13 == 0) SL = 0;
double TP = Ask + BuyTakeprofit13*PipValue*Point;
if (BuyTakeprofit13 == 0) TP = 0;
int ticket = -1;
if (true)
ticket = OrderSend(Symbol(), OP_BUY, BuyLots13, Ask, 4, 0, 0, "My Expert", 2, 0, Blue);
else
ticket = OrderSend(Symbol(), OP_BUY, BuyLots13, Ask, 4, SL, TP, "My Expert", 2, 0, Blue);
if (ticket > -1)
{
if (true)
{
OrderSelect(ticket, SELECT_BY_TICKET);
bool ret = OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0, Blue);
if (ret == false)
Print("OrderModify() error - ", ErrorDescription(GetLastError()));
}
IfOrderDoesNotExist14();
}
else
{
Print("OrderSend() error - ", ErrorDescription(GetLastError()));
}
}
2222222222222222222vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
void IfOrderDoesNotExist14()
{
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() == 3)
{
exists = true;
}
}
else
{
Print("OrderSelect() error - ", ErrorDescription(GetLastError()));
}
if (exists == false)
{
SellOrder15();
}
}
void SellOrder15()
{
double SL = Bid + SellStoploss15*PipValue*Point;
if (SellStoploss15 == 0) SL = 0;
double TP = Bid - SellTakeprofit15*PipValue*Point;
if (SellTakeprofit15 == 0) TP = 0;
int ticket = -1;
if (true)
ticket = OrderSend(Symbol(), OP_SELL, SellLots15, Bid, 4, 0, 0, "My Expert", 3, 0, Red);
else
ticket = OrderSend(Symbol(), OP_SELL, SellLots15, Bid, 4, SL, TP, "My Expert", 3, 0, Red);
if (ticket > -1)
{
if (true)
{
OrderSelect(ticket, SELECT_BY_TICKET);
bool ret = OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0, Red);
if (ret == false)
Print("OrderModify() error - ", ErrorDescription(GetLastError()));
}
}
else
{
Print("OrderSend() error - ", ErrorDescription(GetLastError()));
}
}
int deinit()
{
if (false) ObjectsDeleteAll();
ارجو مساعدتك اخي الكريم جزاك الله خير
في كتابة الكود اللازم لكي يقوم بفتح صفقة معاكسة اذا ارتد السعر بعدد من النقاط وماكن وضعه في الاكسبرت بحيث( اقدر اغير عدد النقاط زي ما انا عاوز )
انا سايب علامات
1111vvvvvv
2222vvvvvvv
اماكن وضع الكود
انا جديد في برمجة الاكسبرتات واستعنت ببرنامج Forex EA Generatorفي الاكسبرت ده
اخيرا .. هل الاكسبرت ده ينفع يشتغل على اكتر من شارت في نفس الوقت من غير ميحصل لخبطة في الصفقات؟
السلام عليكم أستاذنا الغالي أسامة وكل الأخوة الاكارم
سؤالي هل يوجد أمر لتحويل الرقم العشري الى ثنائي في الـ mql وإذا لم يوجد فهل هناك دالة لعمل ذلك على حد علمك لأنني بحثت ولم أجد