وعليكم السلام ، تفضل الكود
كود PHP:Heiken_Up =iCustom(NULL,0,"Heiken_Ashi",3,1);
Heiken_Dn =iCustom(NULL,0,"Heiken_Ashi",2,1);
Printable View
السلام عليكم
اساتذتي الكرام
اريد معرفة ما هو Virtual Trailing Stop
هل هو Trailing Stop الذى نستعملة ام هو شي اخر
واذا امكن ارفاق اكسبيرت مفتوح الكود له
جزاكم الله خيرا
وعليكم السلام ، إجابة مختصرة لسؤالك الأمر VTSO يتحرك لحماية السعر بالنسبة المئوية من قيمة العقد المفتوح بينما SLO العادي يتحرك بالنقاط
ستجد في الرابط شرح كامل سيفيدك
http://www.investopedia.com/ask/answ.../vtsoorder.asp
أنا لم يسبق لي أستخدامه ، إن شاء الله يفيدك فيه أستاذي مستر دولار .
بارك الله فيك استاذي جميل
ممكن مساعده لو سمحتوا في فانكشن يقوم بجمع وتسجيل الارباح بالدولار للأوامر التي اغلقها اكسبيرت معين ويقوم مقارنتها بالخساره للأوامر الحاليه التي لم تقفل بعد او الخسائر العائمه وعندما يصل الي ان ارباح (الارباح بالدولار) الاوامر المغلقه اكبر بعدد محدد بالدولار من الخسائر الحاليه للأوامر التي لم تغلق بعد يقوم باغلاق جميع الصفقات .
ويبداء من جديد في الجمع (وهنا المشكله الكبري) .
المشكله انه عندما يغلق ويبداء من جديد لا اريده ان يقوم بجمع ارباح الاوامر التي اغلقت وحسبت في العمليه الاولي بل يبدا بتسجيل ارباح الاوامر التي ستغلق جديده ومقارنتها بالخسائر الحاليه للأوامر المفعله وهكذا .
هل من افكار في كيفيه برمجتها.
بعد أن يغلق الإكسبرت جميع الصفقات قم بتعريف متغيير يحفظ التوقيت الجديد الذي سيفتح عنده أول صفقه جديده وعرف المتغير من نوع static او عرفه خارج الداله OnTick حتى لا تتغير قيمته إلا عندما تقوم بتغييرها أنت
ثم الموضوع سيكون بسيط سوف تضع من ضمن شروط الداله التي ستحسب أرباح الصفقات التي أغلقت أن يكون توقيت إفتتاحها أكبر من توقيت هذا المتغير
وعليكم السلام ورحمة الله وبركاته
هي نفس فكرة الأستوب لوز المخفي وطبعا تختلف كل طريقة حسب الفكره التي تريدها بعض الإكسبرتات تحسب تريلينج ستوب وهمي بناء على الربح الكلي لجميع الصفقات فمثلا كان الربح الحالي 100 دولار يقوم الإكسبرت بوضع التريلينج الوهمي على 10 دولار فإذا وصل لها أغلق الصفقات وكلما زاد الربح مثلا 110 يتم نقل التريلينج الوهمي إلى 20 دولار وهكذا
أو بناء على نسبة مئويه كما قال الأستاذ جميل أو بناء على النقاط أو يكون التريلينج الوهمي لصفقة واحده فقط وليس للحساب الكلي
هذا مثال لكود قمت بعمله سريعها
كود PHP:input double TrailingUSD=50;
static double TS_Profit;
if(TotalProfit()>=TrailingUSD&&TotalProfit()-TrailingUSD>TS_Profit)
{
TS_Profit=TotalProfit()-TrailingUSD;
}
if(TotalProfit()<=TS_Profit)
{
// close all orders
TS_Profit=0;
}
double TotalProfit()
{
for(int i=0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()==MagicNumber&&OrderSymbol()==Symbol())
{
profit+=OrderProfit();
}
}
return(profit);
}
السلام عليكم ورحمة الله وبركاته
اخى العزيز مستر دولار
كنت قد طلبت منك تعديل على كود
فى هذه المشاركه
https://forum.arabictrader.com/t37612-389.html
وهذه هو الكود
الان المؤشر يرسم اسهم الايام السابقه على اساس اغلاق الامسكود PHP:#property copyright "king_f"
#property link " [email protected]"
#property version "1.00"
#property indicator_chart_window
#property strict
#property indicator_buffers 2 /////// بفرز الاسهم
#property indicator_color1 Lime // لون السهم الصاعد
#property indicator_color2 Red // لون السهم الهابط
static int check=0;
//-------------------------
extern double gap=5 ; // بعد السهم عن الخط
extern int PipsDifference=10;
//--- buffers
double buy[]; // السهم الصاعد
double sell[]; // السهم الهابط
extern int shift =1; // ازاحه الشمعه
extern int period =0; //1440 10080 43200 /// الفريم
double ticksize = MarketInfo(Symbol(),MODE_TICKSIZE); /// حساب قيمه التكه
double t,t1,t2,t3,t4,t5,t6,t7,t8,t9; // متغيرات لقيمه التك
double wp112,wpp112,wp75,wpp75,wp180,wpp180; // متغيرات لقيمه خطوط الدعم والمقاومه
double hiarrow1,lowarrow1,closearrow1,openarrow0; // متغيرات هاى ولو واغلاق الشمعه1 و افتتاح الشمعه صفر لاستخدامهم فى الشروط
double close;
int init()
{
//بما ان المؤشر للمنصه الاربع الارقام
// الكود التالى عباره عن طريقه الحساب اذا كانت المنصه اربع ارقام
//اذا كانت قيمه التك اربع ارقام بعد الفاصله يجعل قيم متغيرات الخطوط باضافه عدد النقاط الموجوده
if (ticksize==0.0001){
t2=0.0030; //
t6=0.0045;
t9=0.0072;
}
if (ticksize ==0000.01){// الذهب رقمين بعد الفاصله
t2=0003.00;
t6=0004.50;
t9=0007.20;
}
if (ticksize ==000.01){// رقمين بعد الفاصله الين اليابانى
t2=000.30;
t6=000.45;
t9=000.72;
}
//--- indicator buffers mapping
// هنا الكود لاعطاء الخطوط التى سنرسمها قيمه
SetIndexStyle(0,DRAW_ARROW,EMPTY,1); /// بفرز الاسهم
SetIndexArrow(0,233);
SetIndexBuffer(0,buy);
SetIndexStyle(1,DRAW_ARROW,EMPTY,1);
SetIndexArrow(1,234);
SetIndexBuffer(1,sell);
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
// هنا انشاء الخطوط
return(0);
}
int deinit()
{
ObjectDelete("wp112");
ObjectDelete("wpp112");
ObjectDelete("wp75");
ObjectDelete("wpp75");
ObjectDelete("wp180");
ObjectDelete("wpp180");
return(0);
}
int start()
{
////////////**************
close =NormalizeDouble(iClose(Symbol(),period,shift),Digits); /// اغلاق اليوم السابق
wp75 = close+t2; // wp75 اسم خط المقاومه الاول
// وهو عباره عن او يساوى قيمه اغلاق الامس او الشمعه 1لليومى مضاف اليها تى2 وهى عدد النقاط وهى 30 نقطه
wpp75 = close-t2;
wp112=close+t6; // 112
wpp112=close-t6;
wp180 =close+t9; // 180
wpp180 = close-t9;
for(int i=1;i<iBarShift(Symbol(),0,iTime(Symbol(),1440,1),false);i++)
{
hiarrow1= NormalizeDouble (iHigh (Symbol(),0,i),Digits);// هاى الشمعه السابقه
lowarrow1 = NormalizeDouble(iLow (Symbol(),0,i),Digits);// لو الشمعه السابقه
closearrow1 = NormalizeDouble(iClose (Symbol(),0,i),Digits);// كلوز الشمعه السابقة
openarrow0 = NormalizeDouble(iOpen (Symbol(),0,i-1),Digits);// اوبن الشمعه الحاليه
//wp75 لو كان هاى الشمعه السابقه يساوى خط المقاومه المسمى
//واغلاق نفس الشمعه السابقه اقل من نفس الخط
//وافتتاح الشمعه الحالية اقل من او يساوى الخط
if(hiarrow1>=wp75-PipsDifference*Point&&hiarrow1<=wp75+PipsDifference*Point && closearrow1<=wp75 && openarrow0<=wp75)
{
sell[i]=High[i]+gap*Point;// اذا تخقق الشروط ارسم سهم هابط ومكانه اعلى اهاى الشمعه بمقدار الجاب
}
if (lowarrow1<=wpp75+PipsDifference*Point&&lowarrow1>=wpp75-PipsDifference*Point && closearrow1>=wpp75 && openarrow0>=wpp75)
{
buy[i]=Low[i]-gap*Point;
}
if(hiarrow1>=wp112-PipsDifference*Point&&hiarrow1<=wp112+PipsDifference*Point && closearrow1<=wp112 && openarrow0<=wp112)
{
sell[i]=High[i]+gap*Point;
}
if (lowarrow1<=wpp112+PipsDifference*Point&&lowarrow1>=wpp112-PipsDifference*Point && closearrow1>=wpp112 && openarrow0>=wpp112)
{
buy[i]=Low[i]-gap*Point;
}
if(hiarrow1>=wp180-PipsDifference*Point&&hiarrow1<=wp180+PipsDifference*Point && closearrow1<=wp180 && openarrow0<=wp180)
{
sell[i]=High[i]+gap*Point;
}
if (lowarrow1<=wpp180+PipsDifference*Point&&lowarrow1>=wpp180-PipsDifference*Point && closearrow1>=wpp180 && openarrow0>=wpp180)
{
buy[i]=Low[i]-gap*Point;
}
}
ObjectCreate("wp75",OBJ_HLINE,0,0,wp75); // خط المقاومه الاولى
// وباقى الاعدادت
ObjectSet ("wp75",OBJPROP_COLOR,clrRed);
ObjectSet("wp75",OBJPROP_STYLE,0);
ObjectSet("wp75",OBJPROP_WIDTH,1);
ObjectCreate ("wpp75",OBJ_HLINE,0,0,wpp75); // خط الدعم الاول
ObjectSet ("wpp75",OBJPROP_COLOR,clrRed);
ObjectSet("wpp75",OBJPROP_STYLE,0);
ObjectSet("wpp75",OBJPROP_WIDTH,1);
ObjectCreate ("wp112",OBJ_HLINE,0,0,wp112);// خط المقاومه الثانى
ObjectSet ("wp112",OBJPROP_COLOR,clrOrange);
ObjectSet("wp112",OBJPROP_STYLE,0);
ObjectSet("wp112",OBJPROP_WIDTH,1);
ObjectCreate ("wpp112",OBJ_HLINE,0,0,wpp112);// خط الدعم الثانى
ObjectSet ("wpp112",OBJPROP_COLOR,clrOrange);
ObjectSet("wpp112",OBJPROP_STYLE,0);
ObjectSet("wpp112",OBJPROP_WIDTH,1);
ObjectCreate("wp180",OBJ_HLINE,0,0,wp180);// خط المقاومه الثالث
ObjectSet ("wp180",OBJPROP_COLOR,Blue);
ObjectSet("wp180",OBJPROP_STYLE,0);
ObjectSet("wp180",OBJPROP_WIDTH,2);
ObjectCreate ("wpp180",OBJ_HLINE,0,0,wpp180); // خط الدعم الثالث
ObjectSet ("wpp180",OBJPROP_COLOR,Blue);
ObjectSet("wpp180",OBJPROP_STYLE,0);
ObjectSet("wpp180",OBJPROP_WIDTH,2);
///////////***************
return(0);
}
بمعنى انه يرسم اسهم يوم 11/8 مثلا لكن على اساس اغلاق الامس 15/9
وهذه متعب فى عمليه الباك تست (بالعين) لانى لازم اغير الshift عند كل يوم اريد
ان اختبره
والمطلوب داله تجعل المؤشر يحسب كل يوم على اساس اغلاق اليوم السابق له
بمعنى يرسم اسهم يوم 11/8 على اساس اغلاق اليوم لسابق له 10/8
تحياتى
بارك الله فيك مستر دولار مشكور جدا جدا جدا
السلام عليكم ورحمة الله وبركاته
بعد ترك دراسه MQL 4 رجعت اليوم لها :0016:
بتصور حتى لو وجدت استراتيجيه مربحه العمل اليدوي يبعدك عن الاهل وحياتك كلها خلف الشاشه
لهذا شيئ رجعت تعلم لعل وعسى نعمل اكسبيرت نربح منه ...
لانه بجد افتقدت اهلي وحياتي خلف الشاشه وبدون فائده
لدي هذا المؤشر يظهر اشاره دخول شراء واشاره دخول بيع
الملف المرفق 417709
كما هو واضح اذا اشاره حمراء بيع واذا خضراء شراء
المطلوب هنا كيف مثلا اذا ظهرت اشاره خضراء بدخل شراء واذا ظهرت اشاره ثانيه يدخل شراء واشاره ثالثه ولم يتحقق هدف 1 و 2 ايضا يدخل شراء
بحسب ماحدد له بمتغير خارجي مثلا extern int count = 3
هنا عدد مرات الدخول شراء في حال ظهرت اشاره شراء
اتمنى وضحت الفكره بحيث انه كل ماتظهر فرصه يدخل بها سواء تحقق الهدف او لا بناء على عدد count هل هو 3 او 2 او 4 ... الخ عدد الصفقات مسموح بها
شكرا لكم
السلام عليكم
كيف استطيع اخد القيم من الموشر اخضر او احمر
او اكبر من 0 او اصغر من الصفر
انا كتبت هدي المثود
double getSolarWind(int mode)//3
{
return iCustom(Symbol(),TimeFrame,"SolarWind-ACS",10,0,650,mode,1);
}
بس القيم مختلفه جربت كل مود 0,1,2
الرجاء المساعدة ولكم جزبل الشكر
لأحاول وضع ذلك الكود
لكنة يعطينى Error 4202كود PHP:if(!ObjectCreate(ChartID(),"text1",OBJ_TEXT,0,Time[1],low1))
{
Print(__FUNCTION__,": failed to create a rectangle! Error code = ",GetLastError());
return(false);
}
ObjectSetString(ChartID(),"text1",OBJPROP_TEXT,"text");
ObjectSetInteger(ChartID(),"text1",OBJPROP_COLOR,clrWhite);
ما الخطا ؟
هذا الخطأ يعني أن الكائن الذي تحاول تعديل قيمه غير موجود ولم يتم رسمه
لذلك إجعل الشروط
حتى تتأكد أنه لن يقوم بإستخدام الداله ObjectSet إلا إذا قام برسم الكائنكود PHP:if(!ObjectCreate(ChartID(),"text1",OBJ_TEXT,0,Time[1],low1))
{
Print(__FUNCTION__,": failed to create a rectangle! Error code = ",GetLastError());
return(false);
}
else
{
ObjectSetString(ChartID(),"text1",OBJPROP_TEXT,"text");
ObjectSetInteger(ChartID(),"text1",OBJPROP_COLOR,clrWhite);
}
وعليكم السلام ورحمة الله وبركاته
بالنسبه للخط الأحمر فسوف تستخدم الكود
وسوف تكون شروط ظهور اللون الأحمركود PHP:iCustom(Symbol(),TimeFrame,"SolarWind-ACS",10,0,650,0,1);
وظهور اللون الأخضركود PHP:if(getSolarWind(0)<0)
والشروط ستكونكود PHP:if(getSolarWind(0)>0)