النتائج 1 إلى 15 من 27
- 22-02-2016, 05:13 PM #1
مؤشر بسيط المرجوا مساعدة في تحديد الخطأ
السلام عليكم أصدقائي
أنا مبتدأ في لغة mql و أريد برمجة مؤشر بسيط تقوم بإدخال الهاي و للو للمؤشر و يقوم برسم خطوط أفقية بين ذلك الهاي و اللو بالفارق الذي تريده من النقاط بين كل خطين
لقد قمت بمحاولة لكن عندما أشغل المؤشر و أدخل له الهاي و اللو و الفارق لا يرسم أي شئ و يتشنج الميتاترايدر و يغلق
المرجوا المساعدة فالمؤشر بسيط جدااا
المؤشر في المرفقات
شكراااااا
- 22-02-2016, 06:01 PM #2
ما دامك قلت هنج
عرفت انها مشكلة for
كذا على السريع حتى يأتي اساتذه بالرد الشافي
اكتبها هكذا
كود:for(int i=1;i<=3;i++)
آخر تعديل بواسطة أبو نـاصر ، 22-02-2016 الساعة 06:03 PM
- 22-02-2016, 11:42 PM #3
- 23-02-2016, 05:47 PM #4
- 24-02-2016, 01:48 PM #5
- 24-02-2016, 05:05 PM #6
اخي الكريم اولا لديك خطا في المعادلة التالية
كود PHP:A=(hight+low)/55;
ساعطيك مثال كيف رسم خطوط افقية على Low و High اي شمعة الى غاية 55
المتغيرات كما وضعتها انت اولا دالة رسم الخطوط الافقية
كود PHP:void Draw(string name,datetime t1,double prc1,datetime t2,double prc2)
{
ObjectCreate(name, OBJ_TREND, 0, t1,prc1,t2,prc2);
ObjectSet(name, OBJPROP_COLOR, LineColor);
ObjectSet(name,OBJPROP_WIDTH,4);
ObjectSet(name, OBJPROP_RAY, 0);
}
كود PHP:for(ObjCount = 0;ObjCount<=DivisionNumber;ObjCount++){
string objName = "Hight_Low" + ObjCount;
Draw(objName,Time[ObjCount], High[ObjCount],Time[ObjCount], Low[ObjCount]);
}
- 24-02-2016, 06:45 PM #7
شكرااا أخي الكريم على الإجابة و المساعدة
أولا أنا قمت بإدخال for على المؤشر الذي عدلته أنت و الذي به A=(hight+low)/2; و ليس A=(hight+low)/55; و لم تعمل
ثانيا أنا لا أريد هاي و اللو لشمعة ما أنا أدخل هاي و لو تاريخي لزوج ما يعني الفارق بينهما كبير و أريد رسم عدد (أنا أحدده) من خطوط أفقية بينهما
المرجوا المساعدة و شكرااا لك أخي الكريم
تحياتي
- 24-02-2016, 06:46 PM #8
شكرااا أخي الكريم على الإجابة و المساعدة
أولا أنا قمت بإدخال for على المؤشر الذي عدلته أنت و الذي به A=(hight+low)/2; و ليس A=(hight+low)/55; و لم تعمل
ثانيا أنا لا أريد هاي و اللو لشمعة ما أنا أدخل هاي و لو تاريخي لزوج ما يعني الفارق بينهما كبير و أريد رسم عدد (أنا أحدده) من خطوط أفقية بينهما
المرجوا المساعدة و شكرااا لك أخي الكريم
تحياتي
- 24-02-2016, 09:48 PM #9
أخي الكريم اعتذر اني لم استطع تلبية طلبك لحد الساعة
مافهمته ان تجعل المدخلات كالاتي
الهاي - اللو - عدد الشموع التي تريد اختبارها ، ثم يرسم المؤشر خط افقي عند الهاي واخر عند اللو مثلا الهاي x واللو y و الشموع من 10 الى 50 ، اذا وجد القيمة x انطلاقا من الشمعة 10 الى 50 يرسم خط وكذلك بالنسبة للقيمة y
هل هذا ماتريد ؟؟؟؟
- 24-02-2016, 11:32 PM #10
أهلا أخي
أخي أنا أريد بكل بساطة أن أدخل الهي و اللو الذين اخترتهما ثم يرسم المؤشر خط افقي عند الهاي واخر عند اللو
بعد ذلك يقوم المؤشر برسم خطوط أفقية بين الهاي و اللو بالفارق الذي أريده بين كل خط و خط
مثلا بين الهاي و اللو 1000 نقطة , انا أريد فارق 100 نقط بين الخطوط يعني المؤشر لازم يرسم 10 خطوط انطلاقا من اللو إلى الهاي أو العكس ليس مهم
و هذا ليس له علاقة بتاتا بالشموع
أرجوا أن تكون الفكرة واضحة أخي و شكرااا جزيلا على المساعدة
- 25-02-2016, 01:58 AM #11
- 25-02-2016, 07:52 PM #12
المؤشر في المرفقات تدخل قييمة للهاي واخرى للو High و Low
فيرسم عليهما خطين ثم عدد الخطوط التي تريد رسمها بين الهاي واللو
في المتغير NumberDiv
القيم الافتراضية هي على شارت GBP/USD
اتمنى ان اكون قد افدتك واي تقصير مني انا اعتدر عنه بشدة تحياتي لك
كود PHP://+------------------------------------------------------------------+
//| Copyright 2006, Driss M. Sliman |
//| Email: [email protected] |
//+------------------------------------------------------------------+
#property copyright "Copyright 2006, Driss M. Sliman "
#property link "[email protected]"
#property indicator_chart_window
#property indicator_buffers 0
extern double high = 1.49335 ;
extern double low = 1.38780 ;
extern int Numberdiv = 20 ;
extern color LineColor = Green ;
int ObjCount = 0;
int current ;
int init()
{
if (false) ObjectsDeleteAll();
IndicatorShortName("High_Low");
IndicatorDigits(Digits+1);
IndicatorBuffers(0);
return(0);
}
int deinit()
{
if (false) ObjectsDeleteAll();
return(0);
}
//+------------------------------------------------------------------+
int start()
{
ObjectsDeleteAll();
Process() ;
return(0);
}
//+------------------------------------------------------------------+
int Process()
{
int i;
int counted_bars = IndicatorCounted();
if(counted_bars < 0) return(-1);
if(counted_bars > 0) counted_bars--;
i = Bars - counted_bars;
while (i >= 0)
{
current = i;
HLine1();
HLine2();
HLine3();
i--;
}
return 0 ;
}
void HLine1()
{
ObjCount += 1;
string objName = "High" + ObjCount;
ObjectCreate(objName, OBJ_HLINE, 0, Time[0], high);
ObjectSet(objName, OBJPROP_COLOR, LineColor);
}
void HLine2()
{
double HL = high - low ;
double step ;
step = (HL/Numberdiv) ;
for(double i = low ; i <= high ;i+=step ){
string objName = "Low" + i;
ObjectCreate(objName, OBJ_HLINE, 0, Time[0],i);
ObjectSet(objName, OBJPROP_COLOR, LineColor);
}
}
void HLine3()
{
ObjCount += 1;
string objName = "Lines" + ObjCount;
ObjectCreate(objName, OBJ_HLINE, 0, Time[0], low);
ObjectSet(objName, OBJPROP_COLOR, LineColor);
}
- 26-02-2016, 12:20 AM #13
- 26-02-2016, 01:13 AM #14
ألف شكر أخي الكريم على المتابعة و المساعدة
لقد قمت بحل المشكلة و استفدت من الكود الذي وضعته
ها هو الكود الخاص بيكود://+------------------------------------------------------------------+ //| divisor.mq4 | //+------------------------------------------------------------------+ #property copyright "Okitrinaw" #property link "https://www.mql5.com" #property indicator_chart_window extern double hight=1.11111; extern double low=1.22222; extern int DivisionNumber=10; extern color LineColor=Red; //string line_name="L"; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //if (false) ObjectsDeleteAll(); return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { double B = hight , A = low; double step = (B - A) / DivisionNumber; for(double i=A ; i<=B ; i+=step) { //string name = "L"+i; //B=B-DivisionNumber; Draw("line"+i, i); } return(0); } void Draw(string name, double price) { //ObjectDelete(name); ObjectCreate(name, OBJ_HLINE, 0, Time[0], price); ObjectSet(name, OBJPROP_STYLE, STYLE_SOLID); ObjectSet(name, OBJPROP_WIDTH, 1); ObjectSet(name, OBJPROP_COLOR, LineColor); }
إن كان ممكن أن تشرح لي فائدة هذه الأكواد التي استعملتهاكود:if (false) ObjectsDeleteAll(); IndicatorShortName("High_Low"); IndicatorDigits(Digits+1); IndicatorBuffers(0); int counted_bars = IndicatorCounted(); if(counted_bars < 0) return(-1); if(counted_bars > 0) counted_bars--;
و شكراااا جزيلااا
تحياتي
- 26-02-2016, 04:05 PM #15
السلام عليكم
لا زال لدي مشكلة واحدة و هي عندما أرسم الخطوط على تشارت معين و أريد أن أمسح يدويا مثلا خط ما من الخطوط التي رسمت يعاد رسمه أوتوماتكيا
كيف أوقف هذا الأمر
و شكراااااا على المساعدة