النتائج 3,316 إلى 3,330 من 10335
الموضوع: موضوع مخصص للأسئلة البرمجية
- 13-02-2013, 04:40 AM #3316
- 13-02-2013, 05:21 AM #3317
- 13-02-2013, 08:17 PM #3318
رد:موضوع مخصص للأسئلة البرمجية
شكرا لك أخي ماستر دولار على إهتمامك.
لاكني لم أعرف كيف أقوم بتعديل ماكتبته على هدا إكسبيرت .
كود PHP://+------------------------------------------------------------------+
//| This MQL is generated by Expert Advisor Builder |
//| http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/ |
//| |
//| In no event will author be liable for any damages whatsoever. |
//| Use at your own risk. |
//| |
//+------------------- DO NOT REMOVE THIS HEADER --------------------+
#define SIGNAL_NONE 0
#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4
#property copyright "Expert Advisor Builder"
#property link "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"
extern int MagicNumber = 0;
extern bool SignalMail = False;
extern bool EachTickMode = True;
extern double Lots = 0.1;
extern int Slippage = 3;
extern bool UseStopLoss = True;
extern int StopLoss = 45;
extern bool UseTakeProfit = True;
extern int TakeProfit = 55;
extern bool UseTrailingStop = True;
extern int TrailingStop = 20;
int BarCount;
int Current;
bool TickCheck = False;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init() {
BarCount = Bars;
if (EachTickMode) Current = 0; else Current = 1;
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit() {
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start() {
int Order = SIGNAL_NONE;
int Total, Ticket;
double StopLossLevel, TakeProfitLevel;
if (EachTickMode && Bars != BarCount) TickCheck = False;
Total = OrdersTotal();
Order = SIGNAL_NONE;
//+------------------------------------------------------------------+
//| Variable Begin |
//+------------------------------------------------------------------+
double Buy1_1 = iStochastic(NULL, 0, 50, 5, 5, MODE_SMA, 0, MODE_MAIN, Current + 1);
double Buy1_2 = iStochastic(NULL, 0, 50, 5, 5, MODE_SMA, 0, MODE_SIGNAL, Current + 1);
double Buy2_1 = iStochastic(NULL, 0, 50, 5, 5, MODE_SMA, 0, MODE_MAIN, Current + 2);
double Buy2_2 = iStochastic(NULL, 0, 50, 5, 5, MODE_SMA, 0, MODE_SIGNAL, Current + 2);
double Sell1_1 = iStochastic(NULL, 0, 50, 5, 5, MODE_SMA, 0, MODE_MAIN, Current + 1);
double Sell1_2 = iStochastic(NULL, 0, 50, 5, 5, MODE_SMA, 0, MODE_SIGNAL, Current + 1);
double Sell2_1 = iStochastic(NULL, 0, 50, 5, 5, MODE_SMA, 0, MODE_MAIN, Current + 2);
double Sell2_2 = iStochastic(NULL, 0, 50, 5, 5, MODE_SMA, 0, MODE_SIGNAL, Current + 2);
double CloseBuy1_1 = iStochastic(NULL, 0, 50, 5, 5, MODE_SMA, 0, MODE_MAIN, Current + 1);
double CloseBuy1_2 = iStochastic(NULL, 0, 50, 5, 5, MODE_SMA, 0, MODE_SIGNAL, Current + 1);
double CloseBuy2_1 = iStochastic(NULL, 0, 50, 5, 5, MODE_SMA, 0, MODE_MAIN, Current + 2);
double CloseBuy2_2 = iStochastic(NULL, 0, 50, 5, 5, MODE_SMA, 0, MODE_SIGNAL, Current + 2);
double CloseSell1_1 = iStochastic(NULL, 0, 50, 5, 5, MODE_SMA, 0, MODE_MAIN, Current + 1);
double CloseSell1_2 = iStochastic(NULL, 0, 50, 5, 5, MODE_SMA, 0, MODE_SIGNAL, Current + 1);
double CloseSell2_1 = iStochastic(NULL, 0, 50, 5, 5, MODE_SMA, 0, MODE_MAIN, Current + 2);
double CloseSell2_2 = iStochastic(NULL, 0, 50, 5, 5, MODE_SMA, 0, MODE_SIGNAL, Current + 2);
//+------------------------------------------------------------------+
//| Variable End |
//+------------------------------------------------------------------+
//Check position
bool IsTrade = False;
for (int i = 0; i < Total; i ++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {
IsTrade = True;
if(OrderType() == OP_BUY) {
//Close
//+------------------------------------------------------------------+
//| Signal Begin(Exit Buy) |
//+------------------------------------------------------------------+
if (CloseBuy1_1 < CloseBuy1_2 && CloseBuy2_1 >= CloseBuy2_2) Order = SIGNAL_CLOSEBUY;
//+------------------------------------------------------------------+
//| Signal End(Exit Buy) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > Point * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
} else {
//Close
//+------------------------------------------------------------------+
//| Signal Begin(Exit Sell) |
//+------------------------------------------------------------------+
if (CloseSell1_1 > CloseSell1_2 && CloseSell2_1 <= CloseSell2_2) Order = SIGNAL_CLOSESELL;
//+------------------------------------------------------------------+
//| Signal End(Exit Sell) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {
if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| Signal Begin(Entry) |
//+------------------------------------------------------------------+
if (Buy1_1 > Buy1_2 && Buy2_1 <= Buy2_2) Order = SIGNAL_BUY;
if (Sell1_1 < Sell1_2 && Sell2_1 >= Sell2_2) Order = SIGNAL_SELL;
//+------------------------------------------------------------------+
//| Signal End |
//+------------------------------------------------------------------+
//Buy
if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (1000 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("BUY order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");
} else {
Print("Error opening BUY order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
//Sell
if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (1000 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("SELL order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");
} else {
Print("Error opening SELL order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
if (!EachTickMode) BarCount = Bars;
return(0);
}
//+------------------------------------------------------------------+
- 13-02-2013, 11:47 PM #3319
- 14-02-2013, 01:03 PM #3320
رد:موضوع مخصص للأسئلة البرمجية
السلام عليكم استاذى الكريم
سؤال برمجى صعب عليا
انا عندى الان صفقة بيع وشراء هيدج بدون تيك بروفيت او استوب لوز
وعلى مسافة معينة يتم فتح صفقة معلقة شراء استوب مضاعفات من سعر صفقة الشراء + الاستيب
ونفس الشئ فتح صفقة معلقة بيع استوب من سعر صفقة البيع -الاستيب
الان موجود صفقة بيع وشراء و صفقة بيع استوب وشراء استوب
المشكلة هنا
فى طريقة حذف صفقة الشراء استوب عند تفعيل صفقة البيع استوب
وضع صفقة شراء استوب ضعف صفقة البيع استوب التى تم تفعله واصبحت صفقة بيع
ونفس الشئ
عند تفعيل صفقة الشراء استوب يقوم الاكسبيرت بحذف البيع استوب وتعليق صفقة بيع استوب بضع الصفقة المفعلة
ويتم فتح الصفقة على سعر صفقة البيع الاولى
المشكلة عندى فى دالة الحذف او امر طريقة الحذف علشان انا عايز يعمل عملية حذف
ويقوم الاكسبيرت بوضع صفقة بيع او سراء استوب ضعف الصفقة التى تم تفعله
هذه هى مشكلتى
ارجو المساعدة فى عرض طريقة وضع الامر
تحياتى لك
- 14-02-2013, 11:42 PM #3321
رد:موضوع مخصص للأسئلة البرمجية
وعليكم السلام ورحمة الله وبركاته
بالعكس أنا أرى الحل سهل جدا
أولا
ستحتاج إلى دالة لمعرفة حجم لوت الصفقه التي فتحت
كود PHP:void LastOrderLot(int type)
{
for(int i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==type)
return(OrderLots);
}
return(0);
}
كود PHP:int orderscnt(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:void Delete_Add_Order(int PendingType,double newLot)
{
for(int i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
int ticket=OrderTicket();double price=OrderOpenPrice();double SL=OrderStopLoss();double TP=OrderTakeProfit();
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==type&&OrderLots()!=newLot)
{
OrderDelete(ticket);
OrderSend(Symbol(),type,newLot,price,3,SL,TP,"EA",MagicNumber,0,Blue);
}
}
}
كود PHP:if(orderscnt(OP_BUYSTOP)==0)
{
Delete_Add_Order(OP_SELLSTOP,LastOrderLot(OP_BUY)*2);
}
if(orderscnt(OP_SELLSTOP)==0)
{
Delete_Add_Order(OP_BUYSTOP,LastOrderLot(OP_SELL)*2);
}
- 15-02-2013, 05:10 PM #3322
رد:موضوع مخصص للأسئلة البرمجية
السلام عليكم استاذى الكريم
الصعب عندى سهل عندك
يزيدك الله من علمه
استاذى الكريم
معرفش فى خطا فى البرمجة
الاكسبيرت فى المرفقات
وجزاك الله خير
طريقة العمل
هى يفتح صفقة هيدج مع تعليق صفقات معلقة بيع وشراء استوب
عند تفعيل صفقة منهم
يتم حذف الصفقة المعلقة
وفتح صفقة معلقة بحجم اللوت مضاعفات
تحياتى لك
- 15-02-2013, 11:42 PM #3323
- 16-02-2013, 02:41 AM #3324
هدا السكريبت يعمل على تقاطع مِؤشرات stochastic اريد تعديله فقط .
الدخول في صفقة ب 0,1 في المئة من رأس المال.
أما إدا خسر السكريبت في صفقة . أن يقوم بقسمت الوت الدي خسره في الصفقة الصابقة على 5 و الخارج هو عدد الوت الدي سيدخل به في الصفقة جديدة.
- 16-02-2013, 02:43 AM #3325
- 16-02-2013, 12:41 PM #3326
- 17-02-2013, 12:28 AM #3327
رد:موضوع مخصص للأسئلة البرمجية
سوف تضيف دالة حساب حجم اللوت
كود PHP:double LotManage()
{
double lot = MathCeil(AccountFreeMargin() * RiskPercent / 1000) / 100;
if(lot<MarketInfo(Symbol(),MODE_MINLOT))lot=MarketInfo(Symbol(),MODE_MINLOT);
if(lot>MarketInfo(Symbol(),MODE_MAXLOT))lot=MarketInfo(Symbol(),MODE_MAXLOT);
return (lot);
}
كود PHP:extern bool UseMoneyManagement = false;
extern int RiskPercent = 10;
كود PHP:if(LastOrderProfit()<0)
Lots=MathMax(LastOrderLot()/5,MarketInfo(Symbol(),MODE_MINLOT));
- 17-02-2013, 05:10 AM #3328
السلام عليكم ورحمة الله
أخى الفاضل أسامة : رأيت أكسبرت على موقع Market of MQL5 programs
وأعتقد انة نفس الاكسبرت الذى تفضلت وعملتة وكنت قد طلبت منك أستفسارات عنة فى مشاركات سابقة للموفنج
أفريج ويختلف عنة فقط فكرة جميلة جدا أتمنى من الله ثم منك أن تنفذها وهى
TrailingStop automatically moves the Stop Loss with the Moving Average level
ومرفق لكم أخى الفاضل صورة منة
وجزاك الله كل الخير وبارك الله فى عملك ورزقك
- 18-02-2013, 03:38 AM #3329
- 18-02-2013, 04:16 AM #3330
ما شاء الله أخى الكريم أسامة كنت واثق انك سوف تقوم ببرمجت الكسبرت
هذا الاكسبرت لتقاطع عدد 2 موفنج , حاولت ان أجعلة على موفنج واحد وفشلت
أرجوا منك أخى الفاضل أن تضيف هذة الخاصية على أكسبرتك 2. MR_dollar MA Breakout v4 وهو لموفنج واحد , وبذلك سوف أعرف أين خطئى فى التعديل علية
أشكرك أخى أسامة وبارك الله فى عملك ورزقك
ودى وتقديرى
المواضيع المتشابهه
-
موضوع مخصص للاكسبيرتات اللتي يستخدمها الاعضاء على الحقيقي,,عندك اكسبيرت ممتاز ضعه هنا
By محمد معمو in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 11آخر مشاركة: 15-12-2023, 02:03 PM -
عااااااااااااجل ( موضوع مخصص للفرص الفورية)!!!
By عاشق الذبذبـة in forum توقعات وتوصيات سوق العملاتمشاركات: 280آخر مشاركة: 27-08-2009, 10:30 PM