السلام عليكم ورحمة الله
كيف يتم ملء بيانات المؤشر الخاص بارسال الايميل بالصورة...مع ملاحظة اني كلما ارميه عالشارت يختفي...وملف الdll موجود بالمكتبه
يعطيكم العافيه
الملف المرفق 455380
Printable View
السلام عليكم ورحمة الله
كيف يتم ملء بيانات المؤشر الخاص بارسال الايميل بالصورة...مع ملاحظة اني كلما ارميه عالشارت يختفي...وملف الdll موجود بالمكتبه
يعطيكم العافيه
الملف المرفق 455380
بعد البحث وجدت اكثر من داله ناقصه وبها أخطاء ولم تضبط معي حقيقةَ .
هل ممكن أحد يفيدنا عن :
دالة للتعامل مع أخر قمه وقاع لـ ZigZag
وفقكم الله
بسم الله الرحمن الرحيم
اعمل الاتي
حيث ان المصفوفة لها عنصرين فقط ستخزن فيهما اخر قمة واخر قاعكود:double ZigZag[2]={0,0};
int i = 0;
int j = 0;
while(i <= 2){
double zig = iCustom(NULL, 0, "ZigZag", 0, j) ;
if( zig != 0){
ZigZag[i] = iCustom(NULL , 0, "ZigZag", 0, j);
SetLines("zigzag__"+i, Time[0],ZigZag[i]) ;
i++;
}
j++;
}
ثم الدالة SetLines تستدعيها كما هو مبين في الاعلى وقد وضعتها لك فقط لتتاكد من النتيجة
اتمنى ان اكون قد افدتك تحياتيكود:void SetLines(string name,datetime time, double price)
{
if(ObjectFind(name) != 0)
{
ObjectCreate(name, OBJ_HLINE, 0, time,price);
ObjectSet(name, OBJPROP_COLOR, Yellow);
}
else
{
if(ObjectGet(name,OBJPROP_TIME1)!=time || ObjectGet(name,OBJPROP_PRICE1)!=price )
{ObjectDelete(name);}
}
}
جزاك الله خير استاذي goldfile شاكر لك اهتمامك ربي يسعدك
(1)
ظهر لي خطأ في while
الملف المرفق 455424
(2)
للتأكيد فقط , هل ZigZag[i] القمه ؟ و ZigZag[j] للقاع ؟
ولو أردت أستخدام القمه والقاع في if
هل سيكون الاستدعاء هكذا , مثال :
شكراً لككود PHP:if ( Close[1] > ZigZag[i] )
تحمل أسئلتي , فأنا مبتدا :Emoticon1:
بسم الله الرحمن الرحيم
ضع متغيرين عامين وسمهم ماشئت مثال
ثم انسخ الدالة التاليةكود:double high , low ;
هذه الدالة ستعيد اخر قمة واخر قاع لمؤشر الزجزاج وقد حذفت المصفوفة لانك تريد اخر قيمتين فقط ولكي اسهل عليك الامركود:void zigzag(){
double Zig1,Zig2,Zig3;
int i = 0 ,
j = 0 ;
while(i < 3){
if( Zig1 != 0){
Zig3=Zig2 ; Zig2=Zig1 ;
}
Zig1 = iCustom(NULL , 0, "ZigZag", 0, j);
if(Zig1 > 0 ){
i++;
}
j++;
}
if(Zig1>Zig2){
high = Zig1 ;low = Zig2 ;
}else{high = Zig2 ;low = Zig1 ;}
Print("low : ",low , " high :",high) ;
}
لاحظ المقارنة المتغير high ياخذ اكبر قيمة مسترجعة والعكس بالنسبة للمتغير low
ثم اذا كان اغلاق الشمعة فوق الهاي والعكس بالنسبة للو هكذا
تحياتيكود:if(Close[0] > high);
واضيف لك من الشعر بيتا تتمة للموضوع ومن الاكواد الجميلة للمعلم اسامة مع بعض التصرف
دالة تعيد اخر قاع انت تختاره من المتغير shift
واخرى لاخر قمةكود:double ZigZagLow(int shift){
int found = 0 ,
i = 0 ;
for(i = 0 ; i < Bars ; i++){
double lo = iCustom(NULL,0,"ZigZag",0,i);
if(lo !=0 && lo == Low[i]) found++ ;
if(shift == found)return(lo) ;
}
return(lo) ;
}
ولعمل المقارنة مثلا تريد اغلاق الشمعة الحالية يكوم اعلى من القمة رقم 2 اعمل الاتيكود:double ZigZagHigh(int shift){
int found = 0 ,
i = 0 ;
for(i = 0 ; i < Bars ; i++){
double hi = iCustom(NULL,0,"ZigZag",0,i);
if(hi !=0 && hi == High[i]) found++ ;
if(shift == found)return(hi) ;
}
return(hi) ;
}
اظن مالكش حق تقول طلعلي خطأ ولا مفهمتش هههه ....كود:if(Close[0] > ZigZagHigh(2)) ;
تقبل ودي
وعليكم السلام ورحمة الله وبركاته
أهم جزء هو SMTP username وهذا ستضع إيميلك
و SMTP password وهذا ستضع فيه باسوورد الإيميل
أما SMTP server فهي تختلف من كل مزود إيميل لآخر فيجب أن تتصل بهم لتعرف ما هو مزود السيرفر الخاص بهم
راجع هذا الموضوع
https://forum.arabictrader.com/t135536.html
إستفسار :
هل ممُكن ( برمجياً ) عمل trailing stop كـ ( سكربت ) وليس ( اكسبريت )
بحيث يقوم بتحريك الهدف والستوب بعد كل عدد مُعين من النقاط ؟
وهل يشترط بـ ( السكربت ) ان يكون الجهاز شغال مثل الاكسبريت او لا ؟ :asvc:
استاذ اسامه الكريم معلش اتعبك معاي
مرفق كود مؤشر ارسال الايميل وكود الاكسبرت واريد الدمج بينهما وليس لي خبره بالمؤشرات فلم انجح.
لو تكرمت كيف ادمج بينهما حتى يرسل الاكسبرت رسائل الى ايميلي تحتوي على معلومات الحساب .مع العلم ان ملف الDLL يوضع في مكتبة الميتاتريدر.
SMTP//smtp.mail.yahoo.com:465
كود المؤشر
كود الاكسبرتكود://+------------------------------------------------------------------+//| SendAdvancedEmail.mq4 |
//| Copyright 2014, Dorian Ocsovszki |
//| |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, Dorian Ocsovszki"
#property link "http://ocsovszki-dorian.blogspot.co.uk/2014/05/sendextendedemail-dll-function-for.html"
#property version "1.00"
#property strict
#property indicator_chart_window
#import "SendAdvancedEmail.dll"
void SendAdvancedEmail(string MailFrom, string MailFromName, string MailTo, string MailCC, string MailSubject, string MailBodyContent, string MailBodyTemplate, string MailPriority, string MailAttachmentPath, string MailAttachmentName, string SMTPServer, int SMTPPort, bool SMTPEnableSSL, int SMTPTimeout, string SMTPUsername, string SMTPPassword);
#import
input string Separator1 = NULL; //=== SCREENSHOT SETTINGS ===
input string PathToScreenshots = "C:\\DATA\\%MT4DIR%\\MQL4\\Files\\"; // Path to Screenshots ( %MT4DIR%\MQL4\Files )
input int SCWidth = 1920; // Screenshot Width
input int SCHeight = 1080; // Screenshot Height
input string Separator2 = NULL; //=== MAIL SETTINGS ===
input string MailFrom = ""; // FROM:
input string MailFromName = "MT4 Advanced eMail Notifier"; // FROM NAME:
input string MailTo = ""; // TO:
input string MailCC = ""; // CC: (Mail1;Mail2;MailN ...)
input string Separator3 = NULL; //=== SMTP SETTINGS ===
input string SMTPServer = "";
input int SMTPPort = 587;
input string SMTPUsername = "";
input string SMTPPassword = "";
int SMTPTimeout = 10000;
bool SMTPEnableSSL = true;
string MailSubject = "MT4 Notifier";
string MailBody = "MT4 Notifier MailBody";
string MailAttachmentPath = NULL;
string MailAttachmentName = NULL;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
string SCFileNameVer1 = StringConcatenate(Symbol(), "_Period", Period(), "_", TimeYear(TimeLocal()), "-", TimeMonth(TimeLocal()), "-", TimeDay(TimeLocal()), "_", PadString(DoubleToStr(TimeHour(TimeLocal()),0),"0",2), "-", PadString(DoubleToStr(TimeMinute(TimeLocal()),0),"0",2), "-", PadString(DoubleToStr(TimeSeconds(TimeLocal()),0),"0",2), ".gif" );
if (ShootScreenShot(SCFileNameVer1)) {
SendAdvancedEmailSimple("[FOREX] New Order Opened", "2014.05.18 13:38:15.738 OrderHistoryTest GBPNZD,M15: #40320001 2014.05.08 18:21:20 buy limit 2.00 GBPNZD 1.92168 0.00000 0.00000 2014.05.15 19:40:55 1.94523 0.00 0.00 0.00 cancelled 0", "C:\\DATA\\XMMT4-GBPNZD\\MQL4\\Libraries\\MailBody.html", "Normal", PathToScreenshots + SCFileNameVer1, SCFileNameVer1);
} else {
Print("ERROR: Screenshot failed. Email event cancelled.");
}
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//---
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
void SendAdvancedEmailSimple(string fMailSubject, string fMailBodyContent, string fMailBodyTemplate, string fMailPriority = "Normal", string fMailAttachmentPath = NULL, string fMailAttachmentName = NULL)
{
SendAdvancedEmail(MailFrom, MailFromName, MailTo, MailCC, fMailSubject, fMailBodyContent, fMailBodyTemplate, fMailPriority, fMailAttachmentPath, fMailAttachmentName, SMTPServer, SMTPPort, SMTPEnableSSL, SMTPTimeout, SMTPUsername, SMTPPassword);
}
bool ShootScreenShot(string SCFileName)
{
bool status = WindowScreenShot(SCFileName,SCWidth,SCHeight,-1,-1,-1);
return (status);
}
string PadString(string toBePadded, string paddingChar, int paddingLength)
{
while(StringLen(toBePadded) < paddingLength)
{
toBePadded = StringConcatenate(paddingChar,toBePadded);
}
return (toBePadded);
}
كود://+------------------------------------------------------------------+//| FireStrategy_EA.mq4 |
//| ENG.ABDELOUAHAB KEBICI |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "ENG.ABDELOUAHAB KEBICI"
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
extern double lot=0.1;
extern double lot2=0.3;
extern double Increment_lot=0.4;
extern int Gap=20;
extern string _Use_One_Type_Order_="=====Use One Type Order=====";
extern bool Use_BuyOrder=false;
extern bool Use_SellOrder=false;
extern string _Close_At_TotalProfit="=====Close at TotalProfit=====";
extern double TotalProfit=50;
extern string _UseFullHedget="=====Use Full Hedge=====";
extern bool UseFullHedge=true;
extern double Floating=200;
extern string __="=======Time Filter========";
extern bool UseTimeFilter= true;
extern int Start_Time = 6;
extern int Finish_Time =21;
extern string ___ooo___="=================";
extern int MagicNumber=2016;
double point;
int digits,Q;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
if(Digits==5 || Digits==3)Q=10;
else Q=1;
if(Digits<4)
{
point=0.01;
digits=2;
}
else
{
point=0.0001;
digits=4;
}
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
DeletPendOrders();
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
double SL,TP,lot1,lots,Lots;
void OnTick()
{
Comment("AccountEquity = ",AccountEquity(),"\n",
"AccountBalance = ",AccountBalance(),"\n",
"=============","\n",
"SommeLots_Buy = ",SommeLots_Buy(),"\n",
"SommeLots_Sell = ",SommeLots_Sell(),"\n",
"=============","\n",
"Floating = ",ProfitAllorders()
);
//+------------------------------------------------------------------+
//| Time |
//+------------------------------------------------------------------+
datetime Current_Time = TimeHour(TimeCurrent());
if (UseTimeFilter&&orderstotal()<1){
if (Start_Time == 0) Start_Time = 24; if (Finish_Time == 0) Finish_Time = 24; if (Current_Time == 0) Current_Time = 24;
if ( Start_Time < Finish_Time )
{
if ( (Current_Time < Start_Time) || (Current_Time >= Finish_Time) ) {Comment("Non-Trading Hours!");return;}
}
if ( Start_Time > Finish_Time )
{
if ( (Current_Time < Start_Time) && (Current_Time >= Finish_Time) ){Comment("Non-Trading Hours!"); return;}
}
}
//---
//+------------------------------------------------------------------+
//| FullHedge |
//+------------------------------------------------------------------+
if(UseFullHedge==true&&SommeLots_Buy()>SommeLots_Sell()&&MathAbs(ProfitAllorders())>=Floating&&ProfitAllorders()<0){
Lots=NormalizeDouble(SommeLots_Buy(),Digits)-NormalizeDouble(SommeLots_Sell(),Digits);
int ticket91000=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),3*Q,SL,TP,"FireStrategy",MagicNumber,0,Red);
DeletPendOrders();
return;
}
if(UseFullHedge==true&&SommeLots_Sell()>SommeLots_Buy()&&MathAbs(ProfitAllorders())>=Floating&&ProfitAllorders()<0){
Lots=NormalizeDouble(SommeLots_Sell(),Digits)-NormalizeDouble(SommeLots_Buy(),Digits);
int ticket100001=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),3*Q,SL,TP,"FireStrategy",MagicNumber,0,Blue);
DeletPendOrders();
return;
}
//+------------------------------------------------------------------+
//| First Trades |
//+------------------------------------------------------------------+
if (orderstotal()<1&&Use_BuyOrder==true&&Use_SellOrder==false){
lot1=lot;
int ticket1=OrderSend(Symbol(),OP_BUY,lot1,NormalizeDouble(Ask,Digits),3*Q,SL,TP,"FireStrategy",MagicNumber,0,Blue);
}
if (orderstotal()<1&&Use_SellOrder==true&&Use_BuyOrder==false){
lot1=lot;
int ticket2=OrderSend(Symbol(),OP_SELL,lot1,NormalizeDouble(Bid,Digits),3*Q,SL,TP,"FireStrategy",MagicNumber,0,Red);
}
//+------------------------------------------------------------------+
//| OpenNext Orders |
//+------------------------------------------------------------------+
if(orderstotal()>0&&TypeLastOrder()=="buy"&&orderstotalPend_Sell()<1&&SommeLots_Buy()!=SommeLots_Sell()){
if(orderstotal()==1)lots=lot2;else lots=LastLotBuy()+Increment_lot;
int ticket11=OrderSend(Symbol(),OP_SELLSTOP,lots,NormalizeDouble(OpenorderBuy()-Gap*point,Digits),3*Q,SL,TP,"FireStrategy",MagicNumber,0,Red);
}
if(orderstotal()>0&&TypeLastOrder()=="sell"&&orderstotalPend_Buy()<1&&SommeLots_Buy()!=SommeLots_Sell()){
if(orderstotal()==1)lots=lot2;else lots=LastLotSell()+Increment_lot;
int ticket22=OrderSend(Symbol(),OP_BUYSTOP,lots,NormalizeDouble(OpenorderSell()+Gap*point,Digits),3*Q,SL,TP,"FireStrategy",MagicNumber,0,Blue);
}
//+------------------------------------------------------------------+
//| Close orders at TotalProfit |
//+------------------------------------------------------------------+
if(ProfitAllorders()>=TotalProfit){
CloseBuyOrders();
CloseSellOrders();
DeletPendOrders();
}
//---
}
//+------------------------------------------------------------------+
int orderstotal()
{
int cnt=0;
for(int i=0;i<OrdersTotal();i++)
{
bool ticket1=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()&&OrderType()!=OP_BUYSTOP&&OrderType()!=OP_SELLSTOP)
{
cnt++;
}
}
return(cnt);
}
//***************
int orderstotalBuy()
{
int cnt=0;
for(int i=0;i<OrdersTotal();i++)
{
bool ticket1=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber())
{
if(OrderType()==OP_BUY) cnt++;
}
}
return(cnt);
}
//****
int orderstotalSell()
{
int cnt=0;
for(int i=0;i<OrdersTotal();i++)
{
bool ticket2=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber())
{
if(OrderType()==OP_SELL) cnt++;
}
}
return(cnt);
}
//*****
double OpenorderBuy()
{
double openorderBuy=0;
for(int i=0;i<=OrdersTotal();i++)
{
bool ticket7=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber && OrderType()==OP_BUY)
{
openorderBuy=OrderOpenPrice();
}
}
return(openorderBuy);
}
//---------------------
double OpenorderSell()
{
double openorderSell=0;
for(int i=0;i<=OrdersTotal();i++)
{
bool ticket8=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber && OrderType()==OP_SELL)
{
openorderSell=OrderOpenPrice();
}
}
return(openorderSell);
}
//**/////////
string TypeLastOrder() {
string type;
for(int i=0;i<=OrdersTotal();i++)
{
bool ticket88=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber ){
if(OrderType()==OP_BUY)type="buy";
if(OrderType()==OP_SELL)type="sell";
}
}
return (type);
}
//*******
double LastLotBuy()
{
double B=0;
for(int i=0;i<=OrdersTotal();i++)
{
bool ticket4=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber && OrderType()==OP_BUY)
{
B=OrderLots();
}
}
return(B);
}
//*****************
double LastLotSell()
{
double S=0;
for(int i=0;i<=OrdersTotal();i++)
{
bool ticket5=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber && OrderType()==OP_SELL)
{
S=OrderLots();
}
}
return(S);
}
//---
int orderstotalPend_Buy()
{
int cnt=0;
for(int i=0;i<OrdersTotal();i++)
{
bool ticket1=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber())
{
if(OrderType()==OP_BUYSTOP) cnt++;
}
}
return(cnt);
}
//****
int orderstotalPend_Sell()
{
int cnt=0;
for(int i=0;i<OrdersTotal();i++)
{
bool ticket2=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber())
{
if(OrderType()==OP_SELLSTOP) cnt++;
}
}
return(cnt);
}
//*****
double ProfitAllorders()
{
double ProfitAllorders=0;
for(int i=0;i<=OrdersTotal();i++)
{
bool ticket112=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
{
ProfitAllorders=ProfitAllorders+OrderProfit();
}
}
return(ProfitAllorders);
}
//---
void CloseBuyOrders()
{
int cnt=OrdersTotal();
for(int i=cnt-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
if(OrderType()==OP_BUY&&OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
{
bool ticketclose1=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3*Q,Red);
}
}
}
void CloseSellOrders()
{
int cnt=OrdersTotal();
for(int i=cnt-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
if(OrderType()==OP_SELL&&OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
{
bool ticketclose2=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3*Q,Blue);
}
}
}
//---
void DeletPendOrders(){
int cnt=OrdersTotal();
for(int i=cnt-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
if((OrderType()==OP_BUYSTOP||OrderType()==OP_SELLSTOP)&&OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) {
bool ticketclose1=OrderDelete(OrderTicket(),Blue) ;
}
}
}
//---
double SommeLots_Buy(){
double SLot=0;
for(int i=0;i<=OrdersTotal();i++)
{
bool ticket133=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber&&OrderType()==OP_BUY)
{
SLot=SLot+OrderLots();
}
}
return(SLot);
}
//---
double SommeLots_Sell(){
double SsLot=0;
for(int i=0;i<=OrdersTotal();i++)
{
bool ticket133=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber&&OrderType()==OP_SELL)
{
SsLot=SsLot+OrderLots();
}
}
return(SsLot);
}
//*********************************
سلام عليكم استاذا المبرمجين
هل يوجد سطر برمجي يوضاف الى موشر لحفظ ارقام التي يرسلها الموشر على صيغة ملف اكسل
للتوضيح لا اريد OPEN او HI او LOW
اريد فقط سحب وحفظ ارقام معادلة الموشر مع تاريخ والوقت والفريم المستخدام
وشكرا
سلام عليكم استاذا المبرمجين
هل يوجد سطر برمجي يوضاف الى موشر لحفظ ارقام التي يرسلها الموشر على صيغة ملف اكسل
للتوضيح لا اريد OPEN او HI او LOW
اريد فقط سحب وحفظ ارقام معادلة الموشر مع تاريخ والوقت والفريم المستخدام
وشكرا
اخي الكريم ستستعمل الدالة iCustom() وتختار المؤشر الذي تريد
ثم بعد ذلك تستعمل الدالتين FileOpen و FileWrite لحفظ الداتا في الملف في هذا المثال اسم الملف هو data.csv
ستجده في المجلد file في نفس مسار الميتاتريد
بالتوفيقكود://+--------------------------------------------------------------------+
//| FileWrite.mq4 |
//| [email protected] | |
//| |
//+--------------------------------------------------------------------+
#property copyright "Copyright 2016,[email protected] "
#property link "[email protected]"
#property version "1.00"
#property strict
#property script_show_inputs
int Handle = 0;
int Count = 0 ;
double imacd[] ;
datetime dateBuffer[];
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
int i ;
ArraySetAsSeries(imacd,true) ;
ArraySetAsSeries(dateBuffer,true) ;
ResetLastError();
string txt = StringConcatenate("Time Frame : ",Period()) ;
int itime = CopyTime(NULL,0,0,1000,dateBuffer) ;
if(itime <= 0){
Print(" error to copy time value , code error ",GetLastError());
}
ArrayResize(imacd,itime) ;
Handle=FileOpen("data.csv", FILE_CSV|FILE_WRITE, ';');
for(i = 0 ; i < itime ; i++){
imacd[i] = iCustom(NULL,0,"MACD",12,26,9,MODE_MAIN,i);Count++;
}
if (Handle > 0)
{
for(i = 0 ; i < Count ; i++)
FileWrite(Handle,dateBuffer[i],NormalizeDouble(imacd[i],Digits),txt) ;
FileFlush(Handle);
}
}