Miscellaneous
Implements a curve of type %1It issuies visual alerts to the screenUses files from the file systemIt reads information from a fileIt writes information to fileIt reads information from a file
0 Views
0 Downloads
0 Favorites
WILLCO_4
//Îïèñàíèå èíäèêàòîðà WILLCO_4.
//Èíäèêàòîð íàñòðîåí äëÿ îáðàáîòêè èíôîðìàöèè èç îò÷åòîâ  Futures-and-Options Combined Reports: â âàðèàíòå (Text)
//(annualof.txt) èëè èç îò÷åòîâ  Futures Only Reports: â âàðèàíòå (Text) (annual.txt).
//Èíäèêàòîð îáðàáàòûâàåò èñòîðè÷åñêèå äàííûå èç îò÷åòîâ ìàêñèìàëüíûì îáúåìîì â 10 ëåò. Òî åñòü ìàêñèìàëüíîå êîëè÷åñòâî 
//èñïîëüçóåìûõ îò÷åòîâ annualof.txt èëè annual.txt ðàâíî 10.

//Ýòè îò÷åòû ìîæíî íàéòè íà ñòðàíèöå http://www.cftc.gov/MarketReports/CommitmentsofTraders/HistoricalCompressed/index.htm
//ãðàôà  Futures-and-Options Combined Reports: (Text) èëè ãðàôà  Futures Only Reports: (Text)

//Èíäèêàòîð ðèñóåò ÷åòûðå ëèíèè. Êðàñíî-îðàíæåâàÿ ëèíèÿ â ïðîöåíòàõ îòîáðàæàåò íàñòðîé ìåëêèõ òðåéäåðîâ. ßðêî çåëåíàÿ -
//íåêîììåð÷åñêèõ òðåéäåðîâ, ñèíÿÿ ëèíèÿ - êîììåð÷åñêèõ òðåéäåðîâ, à ñåðàÿ ëèíèÿÿ ïîêàçûâàåò ñòîõàñòè÷åñêèé îñöèëëÿòîð
//îòêðûòîãî èíòåðåñà OI è àáñîëþòíîå çíà÷åíèå îòêðûòîãî èíòåðåñà OI.

//Ôîðìóëû èíäèêàòîðà Willco è ñòîõàñòè÷åñêîãî îñöèëëÿòîðà OI_Index îòêðûòîãî èíòåðåñà OI, ïðèäóìàííûå òðåéäåðîì 
//Ëàððè Óèëüÿìñîì âûãëÿäÿò òàê:

//    Willco=100%*(çíà÷åíèå Net_Pct òåêóùåé íåäåëè - íàèìåíüøåå çíà÷åíèå Net_Pct çà ïîñëåäíèå N íåäåëü)/
//                (íàèáîëüøåå çíà÷åíèå Net_Pct çà ïîñëåäíèå N íåäåëü - íàèìåíüøåå çíà÷åíèå Net_Pct çà ïîñëåäíèå N íåäåëü).

//Ãäå ÷èñëî N ðàâíî ïåðèîäó èíäèêàòîðà Willco. Net_Pct ðàâíî ÷èñòîé ïîçèöèè îïðåäåëåííîé êàòåãîðèè òðåéäåðîâ èëè ðàçíîñòè
//èõ äëèííîé è êîðîòêîé ïîçèöèè äåëåííîé íà îòêðûòûé èíòåðåñ OI.

//                      Èëè Net_Pct=100%*(Long-Short)/OI.

//Ãäå Long è Short ýòî àáñîëþòíûå çíà÷åíèÿ äëèíîé è êîðîòêîé ïîçèöèè îïðåäåëåííîé êàòåãîðèè òðåéäåðîâ.

//Â îêíå íàñòðîåê èíäèêàòîðà WILLCO_4 ïåðèîä èíäèêàòîðà Willco îòîáðàæàåòñÿ êàê "period". 

//Äëÿ ñòîõàñòè÷åñêîãî îñöèëëÿòîðà îòêðûòîãî èíòåðåñà OI ôîðìóëà òàêàÿ:

//    OI_Index=100%*(çíà÷åíèå OI òåêóùåé íåäåëè - íàèìåíüøåå çíà÷åíèå OI çà ïîñëåäíèå N íåäåëü)/
//                  (íàèáîëüøåå çíà÷åíèå OI çà ïîñëåäíèå N íåäåëü - íàèìåíüøåå çíà÷åíèå OI çà ïîñëåäíèå N íåäåëü).

//Ãäå ÷èñëî N ðàâíî ïåðèîäó ñòîõàñòèêà îòêðûòîãî èíòåðåñà OI.
//Â îêíå íàñòðîåê èíäèêàòîðà WILLCO_4 ïåðèîä èíäèêàòîðà OI_Index îòîáðàæàåòñÿ êàê "period_OI_Index".

//Ôîðìóëà èíäèêàòîðà COT_Index âûãëÿäèò òàê:

//    COT_Index = 100%*(çíà÷åíèå Net òåêóùåé íåäåëè - íàèìåíüøåå çíà÷åíèå Net çà ïîñëåäíèå N íåäåëü)/
//                     (íàèáîëüøåå çíà÷åíèå Net çà ïîñëåäíèå N íåäåëü - íàèìåíüøåå çíà÷åíèå Net çà ïîñëåäíèå N íåäåëü).

//Ãäå ÷èñëî N ðàâíî ïåðèîäó èíäèêàòîðà COT_Index. Net ðàâíî ÷èñòîé ïîçèöèè îïðåäåëåííîé êàòåãîðèè òðåéäåðîâ èëè ðàçíîñòè
//èõ äëèííîé è êîðîòêîé ïîçèöèè, èëè Net=Long-Short.
//Â îêíå íàñòðîåê èíäèêàòîðà WILLCO_4 ïåðèîä èíäèêàòîðà COT_Index îòîáðàæàåòñÿ êàê "period".

//Ôîðìóëà èíäèêàòîðà Movement_Index ïðåäëîæåííàÿ Ñòýôàíîì Áðèñîì âûãëÿäèò òàê:

//                 Movement_Index=COT_Index(t)-COT_Index(t+n).

//Òî åñòü Movement_Index ýòî ðàçíîñòü ìåæäó çíà÷åíèåì èíäèêàòîðà COT_Index íà äàííûé ìîìåíò t è åãî çíà÷åíèåì n íåäåëü íàçàä
//è n ðàâíî ðàñ÷åòíîìó ïåðèîäó ýòîãî èíäèêàòîðà.  îêíå íàñòðîåê èíäèêàòîðà, n îòîáðàæàåòñÿ êàê
//"period_Movement_Index".  êëàññè÷åñêîì âàðèàíòå ýòîé ôîðìóëû, êðèòè÷åñêèìè óðîâíÿìè ñ÷èòàþòñÿ óðîâíè -40% è 40%.

//Èíäèêàòîð Spread_Movement_Index, êîòîðûé ïðèäóìàë Ëàððè Óèëüÿìñ,âûãëÿäèò òàê:

//                 Spread_Movement_Index=Movement_Index-OI_Movement_Index.

//Ãäå OI_Movement_Index ýòî àíàëîã Movement_Index, èëè OI_Movement_Index=OI_Index(t)-OI_Index(t+n) è n òàêæå 
//ðàâíî ââîäíîé ïåðåìåííîé "period_Movement_Index".  ýòîì ñëó÷àå äëÿ ðàñ÷åòà OI_Index áóäåò èñïîëüçîâàòüñÿ íå ïåðèîä
//"period_OI_Index", à ïåðèîä "period".

//Èíäèêàòîð Spread_Movement_Index îáû÷íî ïðèìåíÿåòñÿ ê êîììåð÷åñêèì òðåéäåðàì, íî â èíäèêàòîðå WILLCO_4 îòîáðàæàþòñÿ ëèíèè
//èíäèêàòîðà Spread_Movement_Index ïî âñåì êàòåãîðèÿì òðåéäåðîâ â îäíîì îêíå è êàê âñåãäà êðàñíî-îðàíæåâàÿ ëèíèÿ â
//ïðîöåíòàõ îòîáðàæàåò íàñòðîé ìåëêèõ òðåéäåðîâ. ßðêî çåëåíàÿ - íåêîììåð÷åñêèõ òðåéäåðîâ, à ñèíÿÿ ëèíèÿ - êîììåð÷åñêèõ
//òðåéäåðîâ.  êëàññè÷åñêîì âàðèàíòå äëÿ èíäèêòîðà Spread_Movement_Index êðèòè÷åñêèìè óðîâíÿìè ñ÷èòàþòñÿ -60% è 60%. 

//Ôîðìóëû äëÿ äîëè, èëè ïðîöåíòà äëèííûõ ïîçèöèé îïðåäåëåííîé êàòåãîðèè òðåéäåðîâ â îòêðûòîì èíòåðåñå OI è äëÿ äîëè, èëè  
//ïðîöåíòà êîðîòêèõ ïîçèöèé îïðåäåëåííîé êàòåãîðèè òðåéäåðîâ â îòêðûòîì èíòåðåñå OI ðàâíû ñîîòâåòñòâåííî.
 
//                      Long_Pct=100%*Long/OI.
//                      Short_Pct=100%*Short/OI.

//Èíäèêàòîðíûå ëèíèè ðèñóþòñÿ òîëüêî íà ãðàôèêàõ ñ ïåðèîäàìè Weekly, Daily è H4.

//Èíäèêàòîð ñòîõàñòè÷åñêèé îñöèëëÿòîð OI_Index îòêðûòîãî èíòåðåñà OI ìîæåò ïðîñìàòðèâàòüñÿ â îêíå èíäèêàòîðà WILLCO_4 
//òîëüêî ñ òàêèìè èíäèêàòîðàìè êàê Willco, COT_Index.

//Èíäèêàòîð OI_ îòêðûòîãî èíòåðåñà OI ìîæåò îäíîâðåìåííî ïðîñìàòðèâàòüñÿ ñ èíäèêàòîðàìè Long èëè Short.

//Óðîâíè äëÿ èíäèêàòîðîâ  Willco, COT_Index è OI_Index ðàâíû 100%, 50% è 0%. Äëÿ èíäèêàòîðà Movement_Index ðàâíû
// -40%, 0% è 40%, à äëÿ èíäèêàòîðà Spread_Movement_Index ýòè óðîâíè ðàâíû -60%, 0% è 60% ñîîòâåòñòâåííî.
 
//Íàäïèñü "Willco" â îêíå èíäèêàòîðà îçíà÷àåò èíäèêàòîð Willco.
//Íàäïèñü "NetPct" â îêíå èíäèêàòîðà îçíà÷àåò èíäèêàòîð Net_Pct, èëè ïðîöåíò ÷èñòûõ ïîçèöèé ïî 
//îòíîøåíèþ ê OI, èëè NetPct=100%*(Long-Short)/OI.
//Íàäïèñü "Net" â îêíå èíäèêàòîðà îçíà÷àåò èíäèêàòîð Net, èëè ÷èñòûå ïîçèöèé Net=Long-Short.
//Íàäïèñü "OI" â îêíå èíäèêàòîðà îçíà÷àåò èíäèêàòîð OI_ îòêðûòîãî èíòåðåñà.
//Íàäïèñü "Long" â îêíå èíäèêàòîðà îçíà÷àåò èíäèêàòîð Long äëèííûõ ïîçèöèé.
//Íàäïèñü "Short" â îêíå èíäèêàòîðà îçíà÷àåò èíäèêàòîð Short êîðîòêèõ ïîçèöèé.
//Íàäïèñü "LoPct" â îêíå èíäèêàòîðà îçíà÷àåò èíäèêàòîð Long_Pct ïðîöåíò äëèíîé ïîçèöèé Long â îòêðûòîì èíòåðåñå OI,
//èëè Long_Pct=100%*Long/OI.
//Íàäïèñü "ShPct" â îêíå èíäèêàòîðà îçíà÷àåò èíäèêàòîð Short_Pct ïðîöåíò êîðîòêîé Short ïîçèöèé â îòêðûòîì èíòåðåñå OI,
//èëè Short_Pct=100%*Short/OI.
//Íàäïèñü "COT" â îêíå èíäèêàòîðà îçíà÷àåò èíäèêàòîð COT_Index.
//Íàäïèñü "MovInd" â îêíå èíäèêàòîðà îçíà÷àåò èíäèêàòîð Movement_Index.
//Íàäïèñü "SpMvIn" â îêíå èíäèêàòîðà îçíà÷àåò èíäèêàòîð Spread_Movement_Index.
//×èñëî êîòîðîå çàêëþ÷åíî â êðóãëûå ñêîáêè è îòîáðàæàåòñÿ ñðàçó æå ïîñëå ýòèõ ñîêðàùåííûõ íàçâàíèé 
//ïîêàçûâàåò ïåðèîä "period" ïîäêëþ÷åííîãî èíäèêàòîðà.
//Êíîïêîé "turn_chart" ìîæíî ïåðåâîðà÷èâàòü ãðàôèêè òàêèõ èíäèêàòîðîâ êàê Net, Long, Short, Net_Pct, Long_Pct,
//è Short_Pct. Ýòî ìîæíî äåëàòü ïî èíñòóìåíòàì, íàçâàíèÿ êîòîðûõ îòîáðàæàþòñÿ êëèåíòñêèì òåðìèíàëîì, êàê GBPUSD, 
//AUDUSD, EURUSD, USDCHF, USDJPY, XAUUSD, GOLD, XAGUSD, SILVER, NZDUSD è USDCAD. À äëÿ äðóãèõ èíñòðóìåíòîâ, ìîæíî
//ïåðåâîðà÷èâàòü ãðàôèêè ëþáûõ èíäèêàòîðîâ, èñïîëüçóåìûõ â èíäèêàòîðå WILLCO_4.

// îêíå èíäèêàòîðà ïîñëå íàäïèñè "History" îòîáðàæàåòñÿ êîëè÷åñòâî íåäåëü, äàííûå êîòîðûõ óæå èìåþòñÿ â èíäèêàòîðå. 
// îêíå èíäèêàòîðà ïîñëå íàäïèñè "Last report" îòîáðàæàåòñÿ äàòà ïîñëåäíåãî îò÷åòà.

//Èíäèêàòîð âûâîäèò íà ýêðàí â âèäå íàäïèñè "0.5*AR(4) =123" ïîêàçàíèå â ïèïñàõ î ñðåäíåì äèàïàçîíå äíåé, èëè íåäåëü
//çà îïðåäåëåííûé ïåðèîä óñðåäíåíèÿ. Ýòî ïîêàçàíèå óìíîæàåòñÿ íà ñîîòâåòñòâóþùèé ïðîöåíò(AR_percent). Â äàííîì ïðèìåðå
//ìíîæèòåëü 0.5 îçíà÷àåò 50 ïðîöåíòîâ, à ÷èñëî 4 â êðóãëûõ ñêîáêàõ îçíà÷àåò ïåðèîä óñðåäíåíèÿ (AR_period). Ðàñ÷åò 
//âåäåòñÿ ïî ôîðìóëå: AR(AR_period) =0.01*AR_percent*(high[1]-low[1]+...+high[AR_period-1]-low[AR_period-1]+
//high[AR_period]-low[AR_period])/AR_period, ãäå high[1]-low[1] ýòî äèàïàçîí â÷åðàøíåãî äíÿ, èëè äèàïàçîí ïðîøëîé íåäåëè,
//à ÷èñëî â êâàäðàòíûõ ñêîáêàõ ïîêàçûâàåò èíäåêñ äíÿ. Âåëè÷èíû AR_percent è AR_period ýòî ââîäíûå ïàðàìåòðû.
//Ïî óìîë÷àíèþ AR_percent =50% è AR_period =4. Ðàáî÷èå ãðàôèêè ýòîé îïöèè Daily è Weekly.

//Èíäèêàòîð âûâîäèò íà ýêðàí äâå íàäïèñè, âûêðàøåííûå â ñâåòëî çåëåíûé è êðàñíûé öâåò. Âåðõíÿÿ ñâåòëî çåëåíàÿ íàäïèñü
//ïîêàçûâàåò ñ òî÷íîñòüþ äî îäíîãî ïðîöåíòà, ïðîöåíò âåëè÷èíû êîëåáàíèÿ îò öåíû îòêðûòèÿ äî ìàêñèìóìà òåêóùåãî äíÿ, èëè
//òåêóùåé íåäåëè ïî îòíîøåíèþ ê ñðåäíåìó äèàïàçîíó, èëè ïî ôîðìóëå: Up% =100%*(high[0]-open[0])/AR(AR_period).
//Äëÿ êðàñíîé íàäïèñè ôîðìóëà òàêàÿ: Down% =100%*(open[0]-low[0])/AR(AR_period). Ðàáî÷èå ãðàôèêè ýòîé îïöèè Daily è
//Weekly.

//Íà îòêðûòèè íîâîãî áàðà èíäèêàòîð âûâîäèò íà ýêðàí íàäïèñü "MR4 = 123" ïðè óñëîâèè ÷òî â÷åðàøíèé äèàïàçîí äíÿ, èëè
//äèàïàçîí ïðîøëîé íåäåëè ñàìûé ìàëåíüêèé çà ïîñëåäíèå ÷åòûðå äíÿ, èëè 4 íåäåëè, ñ óêàçàíèåì âåëè÷èíû ýòîãî ìèíèìàëüíîãî
//äèàïàçîíà âûðàæåííîé â ïèïñàõ. Ðàáî÷èå ãðàôèêè ýòîé îïöèè  Daily è Weekly.

//Èíñòðóêöèÿ:
//Ñêà÷àéòå íóæíîå êîëè÷åñòâî ôàéëîâ (Text). Çàòåì ðàñïàêóéòå ýòè ôàéëû â êàòàëîã -Êàòàëîã_òåðìèíàëà\Experts \Files\
//Ýòè ôàéëû èìåþò îäèíàêîâûå íàçâàíèÿ, íàïðèìåð annualof è èõ íóæíî ïåðåèìåíîâàòü íà ëàòèíñêèå çàãëàâíûå áóêâû äëÿ
//òåêóùåãî ãîäà â A, äëÿ ïðîøëîãî ãîäà â B, äëÿ ïîçàïðîøëîãî â C è â D äëÿ ïîçà ïîçàïðîøëîãî è òàê äàëåå, òî åñòü
//â àëôàâèòíîì ïîðÿäêå íàçàä â ïðîøëîå è, íå îáÿçàòåëüíî êîëè÷åñòâî èñïîëüçóåìûõ ôàéëîâ annualof.txt èëè annual.txt
//äîëæíî áûòü âñå 10.

//Ïðèêðåïèòå îêíî èíäèêàòîðà ê îêíó èíòåðåñóþùåãî ôèíàíñîâîãî èíñòðóìåíòà è, äàëåå äåéñòâóéòå ïî ïîäñêàçêàì èíäèêàòîðà
//êîòîðûå áóäóò âûâîäèòñÿ â îêíî ôèíàíñîâîãî èíñòðóìåíòà â âèäå ñîîáùåíèé òèïà Alert. Âðåìÿ ñîçäàíèÿ ôàéëà code.txt"
//êîëåáëåòñÿ îò 2 äî 8 ñåêóíä â çàâèñèìîñòè îò êîëè÷åñòâà èñïîëüçóåìûõ ïåðåèìåíîâàííûõ ôàéëîâ annualof.txt  èëè  annual.txt.
//Åñëè ó áðîêåðà åñòü èíñòðóìåíòû, íàçâàíèÿ êîòîðûõ îòîáðàæàþòñÿ êëèåíòñêèì òåðìèíàëîì, êàê òî: GBPUSD, AUDUSD, EURUSD, 
//USDCHF, USDJPY, XAUUSD, GOLD, XAGUSD, SILVER, NZDUSD è USDCAD, òî â îêíå íàñòðîåê èíäèêàòîðà òîðãîâûé êîä ôüþ÷åðñà ïî
//ýòèì èíñòðóìåíòàì ââîäèòü íå íàäî, òàê êàê â èíäèêàòîðå óæå åñòü êîäû ïî ýòèì èíñòðóìåíòàì è âûáîð êîäà ôüþ÷åðñà ïî 
//òàêèì èíñòðóìåíòàì ïðîèñõîäèò àâòîìàòè÷åñêè.
//Äëÿ äðóãèõ ñëó÷àåâ, çíà÷åíèå òîðãîâîãî êîäà ôüþ÷åðñà ìîæíî óçíàòü ïîñìîòðåâ îò÷åò. Êîä íàõîäèòñÿ â ÷åòâåðòîé êîëîíêå îò÷åòà
//Ê ïðèìåðó, äëÿ ôüþ÷åðñà ïøåíèöû, òîðãîâûé êîä êîòîðîãî ðàâåí 001602, ðàñïîëàãàåòñÿ ñðàçó æå ïîñëå äàòû ôîðìàòà "yyyy-mm-dd"

//"WHEAT-SRW - CHICAGO BOARD OF TRADE" ,130226 ,2013-02-26,001602 ,CBT ,00 ,001 ,  543875,.....

//à äëÿ ïðèìåðà ïî ôüþ÷åðñó êóêóðóçû  òîðãîâûé êîä ðàâåí 002602 

//"CORN - CHICAGO BOARD OF TRADE" ,130226 ,2013-02-26,002602 ,CBT ,00 ,002 , 1633637,...

//Äëÿ åæåíåäåëüíûõ îáíîâëåíèé ôàéëîâ code.txt, êîòîðûå ñîçäàåò èíäèêàòîð, èçìåíÿéòå çíà÷åíèÿ ãëîáàëüíûõ ïåðåìåííûõ
//(êëàâèøà F3) êîòîðûå òàêæå ñîçäàåò èíäèêàòîð ñ èìåíàìè "code" ñ 0 íà 1.
//Åñëè íåò äðóãèõ ãëîáàëüíûõ ïåðåìåííûõ íå îòíîñÿùèõñÿ ê èíäèêàòîðó WILLCO_4, òî ìîæíî ïðîñòî èçìåíèòü çíà÷åíèå ãëîáàëüíîé
//ïåðåìåííîé ñ èìåíåì "Update all files code.txt" ñ 0 íà 1, òîãäà âñå ãëîáàëüíûå ïåðåìåííûå ñ èìåíàìè "code" ïðèîáðåòóò
//çíà÷åíèå 1. Äîæäèòåñü ïðèõîäà òèêà ëèáî íàæìèòå êíîïêó Refresh(Îáíîâèòü) îáíîâëåíèÿ ãðàôèêà è ôàéë code.txt áóäåò 
//îáíîâëåí, èíäèêàòîð âûäàñò óâåäîìëåíèå îá îáíîâëåíèè.
//Êàê òîëüêî ôàéë code.txt áóäåò îáíîâëåí, ãëîáàëüíûå ïåðåìåííûå ñ èìåíàìè "code" è "Update all files code.txt"
//âåðíóò ñâîè çíà÷åíèÿ ðàâíûå íóëþ.

//Åñëè ïîòðåáóåòñÿ ñîçäàò áîëåå îáúåìíûé ôàéë code.txt, òî óäàëèòå ïðåäøåñòâóþùèé åìó ôàéë code.txt. Çàòåì ïåðåîòêðîéòå
//îêíî íàñòðîåê èíäèêàòîðà, ëèáî ïåðåóñòàíîâèòå èíäèêàòîð è òîãäà, ÷åðåç íåñêîëüêî ñåêóíä íîâûé ôàéë code.txt áóäåò ñîçäàí. 

//Åñëè ïîòðåáóåòñÿ îáíîâèòü ôàéë Codes.txt (ýòîò ôàéë ñîäåðæèò âñå êîäû ïîïàäàþùèåñÿ â îò÷åòàõ annualof.txt, èëè annual.txt 
//è ñëóæèò äëÿ ôóíêöèè ïðîâåðêè íà ïðàâèëüíîñòü ââåäåíîãî êîäà), òî íóæíî óäàëèòü ãëîáàëüíóþ ïåðåìåííóþ ñ èìåíåì "000000".
//Ñ ïðèõîäîì íîâîãî òèêà ôàéë Codes.txt áóäåò çàíîâî ñîçäàí.

//Ïðè ïåðåêëþ÷åíèè èíäèêàòîðîâ â îêíå íàñòðîåê èíäèêàòîðà WILLCO_4, ìîæåòå ïîëüçîâàòüñÿ êíîïêîé Reset(Ñáðîñ). Õîòÿ ïðè ýòîì
//íàäïèñü êîäà èñ÷åçàåò èç ñòðîêè ââîäà, íî èíôîðìàöèÿ î ðàíåå ââåäåíîì êîäå ïðè ýòîì ñîõðàíÿåòñÿ â èíäèêàòîðå äî òåõ ïîð, 
//ïîêà èíäèêàòîð ïðèêðåïëåí ê îêíó ôèíàíñîâîãî èíñòðóìåíòà.

//Åñëè ëèíèè èíäèêàòîðà íå îòðèñîâûâàþòñÿ, èëè êîãäà ïðîèçîøëî ñìåùåíèå ãðàôèêà èíäèêàòîðà îòíîñèòåëüíî ãðàôèêà öåí, òî
//îòêðîéòå îêíî íàñòðîåê èíäèêàòîðà è íàæìèòå êíîïêó OK.

//Åñëè â ïàïêå ôàéëîâ åñòü ôàéëû ñîçäàííûå èíäèêàòîðîì WILLCO_3, òî ýòè ôàéëû ñëåäóåò óäàëèòü ïðåæäå, ÷åì íà÷àòü
//èñïîëüçîâàòü èíäèêàòîð WILLCO_4.

#property indicator_separate_window 
#property indicator_buffers 7
#property indicator_color1 LimeGreen
#property indicator_color2 DodgerBlue
#property indicator_color3 OrangeRed
#property indicator_color4 Gray
#property indicator_color5 LightSlateGray
#property indicator_color6 LightSlateGray
#property indicator_color7 LightSlateGray
#property indicator_style1 0
#property indicator_style2 0
#property indicator_style3 0
#property indicator_style4 0
#property indicator_width1 1
#property indicator_width2 1
#property indicator_width3 1
#property indicator_width4 1
extern string code="Enter_code";
extern int period=26;
extern bool COT_Index=false;
extern bool OI_Index=false;
extern int period_OI_Index=52;
extern bool Net=false;
extern bool Movement_Index=false;
extern int period_Movement_Index=6;
extern bool Spread_Movement_Index=false;
extern bool OI_=false;
extern bool Long=false;
extern bool Short=false;
extern bool Net_Pct=false;
extern bool Long_Pct=false;
extern bool Short_Pct=false;
extern bool turn_chart=false;//ïåðåâåðíóòü ãðàôèê
extern int AR_period=4;
extern int AR_percent=50;

string Column_1="CFTC Contract Market Code";
string Column_2="As of Date in Form YYYY-MM-DD";
string Column_3="Open Interest (All)";
string Column_4="Noncommercial Positions-Long (All)";
string Column_5="Noncommercial Positions-Short (All)";
string Column_6="Commercial Positions-Long (All)";
string Column_7="Commercial Positions-Short (All)";
string Column_8="Nonreportable Positions-Long (All)";
string Column_9="Nonreportable Positions-Short (All)";

int hh=1;
int z=0;
int sz=0;
int hi=0;
int x=0;
int rq=0;
int v=0;
int az,zi,rr,p,hist;
datetime DATE[545],DA[545],data[35],T;
double Buffer0[],Buffer1[],Buffer2[],Buffer3[];
double Buffer4[],Buffer5[],Buffer6[],ext1,ext2,point;
double O[545],E1[545],E2[545],E3[545],CO1[545],CO2[545],CO3[545];
double L1[545],L2[545],L3[545],S1[545],S2[545],S3[545],value[545];
double X1[545],X2[545],X3[545],C1[545],C2[545],C3[545],LO1[545];
double LO3[545],SH1[545],SH2[545],SH3[545],OI[545],LO2[545];
string F[15900],R[489],TEXT[545],symbol,xgs;
//----
int init( )
 {
  IndicatorBuffers(7);
  SetIndexBuffer(0,Buffer0);
  SetIndexBuffer(1,Buffer1);
  SetIndexBuffer(2,Buffer2);
  SetIndexBuffer(3,Buffer3);
  SetIndexBuffer(4,Buffer4);
  SetIndexBuffer(5,Buffer5);
  SetIndexBuffer(6,Buffer6);
  SetIndexStyle(0,DRAW_LINE);
  SetIndexStyle(1,DRAW_LINE);
  SetIndexStyle(2,DRAW_LINE);
  SetIndexStyle(3,DRAW_LINE);
  SetIndexStyle(4,DRAW_LINE,2,1);
  SetIndexStyle(5,DRAW_LINE,2,1);
  SetIndexStyle(6,DRAW_LINE,2,1);
  ObjectCreate("G02YQ4LAd7Jk",OBJ_LABEL,1,0,0,0,0,0,0);
  ObjectSet("G02YQ4LAd7Jk",OBJPROP_XDISTANCE,534);
  ObjectSet("G02YQ4LAd7Jk",OBJPROP_YDISTANCE,2);
  symbol=Symbol( );
  p=Period( );
  point=Point;
  if (period<2)period=2;
  if (period_OI_Index<2)period_OI_Index=2;
  if (period_Movement_Index>=period)period_Movement_Index=period-1;
  int q[13];
  string terf[13];
  xgs="Willco";
  for (int o=0; o<13; o++)
  {
   if (o==0 && COT_Index==true)
   {
    q[o]=1;
    terf[o]="\"COT_Index\"";
    xgs="COT";
   }
   if (o==1 && Net==true)
   {
    q[o]=1;
    terf[o]="\"Net\"";
    xgs="Net";
   }
   if (o==2 && OI_==true && Long==false && Short==false)
   {
    q[o]=1;
    terf[o]="\"OI_\"";
    xgs="OI";
   }
   if (o==3 && Long==true)
   {
    q[o]=1;
    terf[o] ="\"Long\"";
    xgs="Long";
   }
   if (o==4 && Short==true)
   {
    q[o]=1;
    terf[o]="\"Short\"";
    xgs="Short";
   }
   if (o==5 && OI_==true && Long==true)
   {
    q[o]=1;
    q[3]=0;
    terf[o]="\"Long\"";
    xgs="Long";
   }
   if (o==6 && OI_==true && Short==true)
   {
    q[o]=1;
    q[4]=0;
    terf[o]="\"Short\"";
    xgs="Short";
   }
   if (o==7 && Net_Pct==true)
   {
    q[o]=1;
    terf[o]="\"Net_Pct\"";
    xgs="NetPct";
   }
   if (o==8 && Long_Pct==true)
   {
    q[o]=1;
    terf[o]="\"Long_Pct\"";
    xgs="LoPct";
   }
   if (o==9 && Short_Pct==true)
   {
    q[o]=1;
    terf[o]="\"Short_Pct\"";
    xgs="ShPct";
   }
   if (o==10 && Movement_Index==true)
   {
    q[o]=1;
    terf[o]="\"Movement_Index\"";
    xgs="MovInd";
   }
   if (o==11 && Spread_Movement_Index==true)
   {
    q[o]=1;
    terf[o]="\"Spread_Movement_Index\"";
    xgs="SpMvIn";
   }
   if (o==12 && COT_Index==false && OI_Index==true)
   { 
    q[o]=1;
    q[0]=0;
    terf[o]="\"OI_Index\"";
   }
  }
  //----
  string sg=" ";
  string dg;
  for (o=0; o<13; o++)
  { 
   if (q[o]==1)
   {
    rq++;
    if (rq==1)dg=terf[o];
    if (rq==2)
    {
     sg="Îòêëþ÷èòå  "+dg+"  èëè  "+terf[o]+"";
     break;
    }
   }
  }
  if (p<PERIOD_H4 || p>PERIOD_W1)
  {
   sg="Ðàáî÷èå ïåðèîäû: Weekly, Daily è H4";
   rq=2;
  }
  ObjectSetText("G02YQ4LAd7Jk",""+sg+"",9,"Verdana",DarkOrange);
  return(0);
 }
//----
int deinit( )
 {
  GlobalVariableDel(code);
  return(0);
 }
//----
int start( )
 {
   if (rq>1)return(0);
   if (GlobalVariableGet("Update all files code.txt")==1)
   {
    for (int i=0; i<GlobalVariablesTotal( ); i++)
    {
     string name=GlobalVariableName(i);
     if (name!="000000")GlobalVariableSet(name,1);
    }
   }
   GlobalVariableSet("Update all files code.txt",0);
   int keo=GlobalVariableGet(code);
   int oe=GlobalVariableGet("Create a file "+code+".txt ?");
   int ac=GlobalVariableGet("000000");
   string File_Name_1="A.txt";
   string File_Name_2="B.txt";
   string File_Name_3="C.txt";
   string File_Name_4="D.txt";
   string File_Name_5="E.txt";
   string File_Name_6="F.txt";
   string File_Name_7="G.txt";
   string File_Name_8="H.txt";
   string File_Name_9="I.txt";
   string File_Name_10="J.txt";
   double iO,g0,g1,g2,g3;
   string x1,e1,e2,File_Write_Name,File_Read_Name,day,month,year,n,to,s;
   int e,y,Handle,f,n4,n3,n8,n9,n10,n12,n13,n16,n17,total,err,error,A,k,d,MaxIdx,MinIdx,b,io,c,q;
   if (v!=1)
   {
    az=0;
    zi=-1;
    rr=1;
    if (turn_chart==true)
    {
     az=1;
     zi=1;
     rr=-1;
    }
    string symb[]={"GBPUSD","AUDUSD","EURUSD","NZDUSD","XAUUSD","GOLD","XAGUSD","SILVER","USDCAD","USDCHF","USDJPY"};
    string cd[]={"096742","232741","099741","112741","088691","088691","084691","084691","090741","092741","097741"};
    int xaz[]={0,0,0,0,0,0,0,0,1,1,1};
    int yzi[]={-1,-1,-1,-1,-1,-1,-1,-1,1,1,1};
    for(i=ArraySize(symb)-1; i>=0; i--)
    {
     if (symb[i]==symbol)
     {
      code=cd[i];
      az=xaz[i];
      zi=yzi[i];
      break;
     }
    }
    //NIKKEI STOCK AVERAGE YEN DENOM - CHICAGO MERCANTILE EXCHANGE
    if(StringSubstr(symbol,0,3)=="NKD")
    {
     code="240743";
     az=0;
     zi=-1;
    }
    //SUGAR NO. 11 - ICE FUTURES U.S
    if(StringSubstr(symbol,0,2)=="SB")
    {
     code="080732";
     az=0;
     zi=-1;
    }
    v=1;
   }
   //----------------------------------------------- Block 2
   i=0;
   if (code=="Enter_code" && ObjectFind("IR8e23Ss7G59")==-1)
   {
    if (hi!=1)
    {
     Alert("WILLCO_4 Ïîæàëóéñòà ââåäèòå êîä ôüþ÷åðñà");
     hi=1;
    }
    return(0);
   }
   //----
   if (ac!=2)
   {
    GlobalVariableSet("000000",2);
    Handle=FileOpen("A.txt",FILE_CSV|FILE_READ,",");
    if (Handle<0)
    {
     error=GetLastError( );
     if (error==4103 || error==5004)
     {
      Alert("WILLCO_4 Ôàéë A.txt íå íàéäåí. ",
      "\nÏîæàëóéñòà óäàëèòå ãëîáàëüíóþ ïåðåìåííóþ  \"000000\" ",
      "\nè ïîâòîðèòå ïîïûòêó  Block 2A");                          // Block 2A
     }
     else
     {
     if(error!=0)
     {
      Alert("WILLCO_4 Îøèáêà: "+error+"  ïðè ïîïûòêå îòêðûòü ôàéë  A.txt ",
      "\nÏîæàëóéñòà óäàëèòå ãëîáàëüíóþ ïåðåìåííóþ  \"000000\" ",
      "\nè ïîâòîðèòå ïîïûòêó  Block 2B");                          // Block 2B
     }
     }
     z=1;
     hi=1;
     FileClose(Handle);
     return(0);
    }
    else
    {
    if (Handle>0)
    {
     while(FileIsEnding(Handle)==false)
     {
      total++;
      i++;
      if (i==8 && total>=130)FileSeek(Handle,500,SEEK_CUR);
      s=FileReadString(Handle);
      if (total<=7)
      {
       if (s=="\""+Column_1+"\"")n4=i;
       if (n4!=0)total=8;
       if (total==7)
       {
        Alert("WILLCO_4 Âíèìàíèå! Íàçâàíèå êîëîíêè  \"CFTC Contract Market Code\" èçìåíåíî CFTC!");
        FileClose(Handle);
        z=1;
        hi=1;
        break;
        return(0);
       }
     }
     if ( (i==4 || i==5 || i==6) && total>=130)
     {
      e1=StringTrimRight(s);
      e2=StringTrimLeft(s);
      if (StringLen(e1)==6)
      {
       k++;
       F[k]=e1;
       if(F[k-1]!=F[k])
       {
        sz++;
        R[sz]=e1;
       }
      }
      else
      {
      if (StringLen(e2)==6)
      {
       k++;
       F[k]=e2;
       if (F[k-1]!=F[k])
       {
        sz++;
        R[sz]=e2;
       }
      }
      }
     }
     if (FileIsLineEnding(Handle)==true)i=0;
     if (FileIsEnding(Handle)==true)break;
     }
     FileClose(Handle);
     total=0;
     i=0;
     k=0;
     z=0;
     hi=0;
    }
    }
    //--------------------------------------------------
    Handle=FileOpen("Codes.txt",FILE_CSV|FILE_WRITE,",");
    if (Handle<0)
    {
     error=GetLastError( );
     if (error==4103 || error==5004)
     {
      Alert("WILLCO_4 Ôàéë Codes.txt íå íàéäåí. ",
      "\nÏîæàëóéñòà óäàëèòå ãëîáàëüíóþ ïåðåìåííóþ  \"000000\" ",
      "\nè ïîâòîðèòå ïîïûòêó  Block 2Ñ");                        // Block 2Ñ
     }
     else
     {
     if (error!=0)
     {
      Alert("WILLCO_4 Îøèáêà: "+error+" ïðè ïîïûòêå ñîçäàòü ôàéë Codes.txt ",
      "\nÏîæàëóéñòà óäàëèòå ãëîáàëüíóþ ïåðåìåííóþ  \"000000\" ",
      "\nè ïîâòîðèòå ïîïûòêó   Block 2D");                       // Block 2D 
     }
     }
     hi=1;
     z=1;
     FileClose(Handle);
     return(0);
    }
    else
    {
    if(Handle>0)
    {
     for (i=1; i<=sz; i++)
     {
      y=FileWrite(Handle,R[i]);
      if (y<0)
      {
       Alert("WILLCO_4 Îøèáêà: "+GetLastError( )+" ïðè çàïèñè ôàéëà Codes.txt. ",
       "\nÏîæàëóéñòà óäàëèòå ãëîáàëüíóþ ïåðåìåííóþ  \"000000\" ",
       "\nè ïîâòîðèòå ïîïûòêó   Block 2E");                          // Block 2E
       FileClose(Handle);
       z=1;
       hi=1;
       break;
       return(0);
      }
      }
      FileClose(Handle);
      Alert("WILLCO_4 Ôàéë Codes.txt ñîçäàí. Êîëè÷åñòâî êîäîâ "+sz+"");
      hi=0;
      z=0;
     }
     }    
    }
    //-----------------------------------------
    if (hi!=1 && ObjectFind("IR8e23Ss7G59")==-1)
    { 
     Handle=FileOpen("Codes.txt",FILE_CSV|FILE_READ,",");
     if (Handle<0)
     {
      error=GetLastError( );
      if (error==4103 || error==5004)
      {
       Alert("WILLCO_4 Ôàéë Codes.txt íå íàéäåí. ",
       "\nÏîæàëóéñòà óäàëèòå ãëîáàëüíóþ ïåðåìåííóþ ",
       "n\"000000\" è ïîâòîðèòå ïîïûòêó  Block 2F");     // Block 2F
      }
      else 
      {
      if (error!=0)
      {
       Alert("WILLCO_4 Îøèáêà: "+error+" ïðè ïîïûòêå îòêðûòü ôàéë Codes.txt  Block 2G");  // Block 2G
      }
      }
      z=1;
      FileClose(Handle);
      return(0);
     }
     else
     {
     if (Handle>0)
     {
      while(FileIsEnding(Handle)==false)
      {
       if (code==FileReadString(Handle) )
       {
	     ObjectCreate("IR8e23Ss7G59",OBJ_LABEL,1,0,0,0,0,0,0);
        ObjectSet("IR8e23Ss7G59",OBJPROP_XDISTANCE,44);
        ObjectSet("IR8e23Ss7G59",OBJPROP_YDISTANCE,31);
        ObjectSetText("IR8e23Ss7G59","  "+code+" ",12,"Verdana",LightSlateGray);
        break;
       }
       if (FileIsEnding(Handle)==true)break;
      }
      z=0;
      FileClose(Handle);
     }
     }
     //----
     if (ObjectFind("IR8e23Ss7G59")==-1)
     {
      Alert("WILLCO_4 Áûë ââåäåí íåâåðíûé êîä ", code,
      "\n. Ïîæàëóéñòà ââåäèòå ïðàâèëüíûé êîä. ",
      "\nÏðè ïîâòîðíîì ïîÿâëåíèè ýòîãî ñîîáùåíèÿ âåðîÿòíî ",
      "\nêîä â îò÷åòå áûë èçìåíåí");
      hi=1;
      return(0);
     }
     hi=1;
    }
    //-------------------------- Block 3
    if (keo==1 || oe==1)
    {
     if (ObjectFind("IR8e23Ss7G59")==-1)
     {
      z=1;
      return(0);
     }
     n4=0;
     i=0;
     string qi1=StringTrimLeft(ObjectDescription("IR8e23Ss7G59") );
     code=StringTrimRight(qi1);
     if (keo==1)
     {
      File_Read_Name=code+".txt";
      Handle=FileOpen(File_Read_Name,FILE_CSV|FILE_READ,",");
      FileSeek(Handle,-130,SEEK_END);
      if (Handle>0)
      {
       while(i<35)
       {
        i++;
        data[i]=FileReadNumber(Handle);
        if (FileIsLineEnding(Handle)==true)
        {
         if (data[i]==0)
         {
          datetime ff=data[i-14];
          break;
         }
        }
       }
       FileClose(Handle);
      }
      else
      {
      if (Handle<0)
      {
       error=GetLastError( );
       if (error==4103 || error==5004)
       {
        Alert("WILLCO_4 Ôàéë "+File_Read_Name+" íå íàéäåí  Block 3A");    // Block 3A
       }
       else
       {
       if (error!=0)
       {
        Alert("WILLCO_4 Îøèáêà: "+error+" ïðè ïîïûòêå îòêðûòü ôàéë "+File_Read_Name+"  Block 3B"); // Block 3B 
       }
       }
       z=1;
       FileClose(Handle);
       GlobalVariableSet(code,0);
       return(0);
      }
      }
     }
     //---------------------------------------- Block 4
     i=0;
     if (keo==1)GlobalVariableSet(code,0);
     if (oe==1)
     {
      A=9;
      GlobalVariableDel("Create a file "+code+".txt ?");
     }
     while(err<=A)
     {
      if (err==0)x1=File_Name_1;
      if (err==1)x1=File_Name_2;
      if (err==2)x1=File_Name_3;
      if (err==3)x1=File_Name_4;
      if (err==4)x1=File_Name_5;
      if (err==5)x1=File_Name_6;
      if (err==6)x1=File_Name_7;
      if (err==7)x1=File_Name_8;
      if (err==8)x1=File_Name_9;
      if (err==9)x1=File_Name_10;
      Handle=FileOpen(x1,FILE_CSV|FILE_READ,",");
      if(Handle<0)
      {
       error=GetLastError( );
       if (error==4103 || error==5004)
       {
        Alert("WILLCO_4 Ôàéë "+x1+" íå íàéäåí  Block 4A");  // Block 4A
       }
       else
       {
       if (error!=0)
       {
        Alert("WILLCO_4 Îøèáêà: "+error+" ïðè ïîïûòêå îòêðûòü ôàéë "+x1+"  Block 4B");  // Block 4B
       }
       }
       z=1;
       FileClose(Handle);
       break;
       return(0);
      }
      else
      {
      if(Handle>0)
      {
       while(FileIsEnding(Handle)==false)
       {
        total++;
        i++; 
        if (i==20 && total>=130)FileSeek(Handle,500,SEEK_CUR);
        TEXT[i]=FileReadString(Handle);
        string text=TEXT[i];
        if (total<=19)
        {
         if (text=="\""+Column_1+"\"")n4=i;
         if (text=="\""+Column_2+"\"")n3=i;
         if (text=="\""+Column_3+"\"")n8=i;
         if (text=="\""+Column_4+"\"")n9=i;
         if (text=="\""+Column_5+"\"")n10=i;
         if (text=="\""+Column_6+"\"")n12=i;
         if (text=="\""+Column_7+"\"")n13=i;
         if (text=="\""+Column_8+"\"")n16=i;
         if (text=="\""+Column_9+"\"")n17=i;
         if (n4!=0 && n3!=0 && n8!=0 && n9!=0 && n10!=0 && n12!=0 && n13!=0 && n16!=0 && n17!=0)total=20;
         if (total==19)
         {
          if (n4==0)Alert("WILLCO_4 Âíèìàíèå! Íàçâàíèå êîëîíêè  \"CFTC Contract Market Code\" èçìåíåíî CFTC!");
          if (n3==0)Alert("WILLCO_4 Âíèìàíèå! Íàçâàíèå êîëîíêè  \"As of Date in Form YYYY-MM-DD\" èçìåíåíî CFTC!");
          if (n8==0)Alert("WILLCO_4 Âíèìàíèå! Íàçâàíèå êîëîíêè  \"Open Interest (All)\" èçìåíåíî CFTC!");
          if (n9==0)Alert("WILLCO_4 Âíèìàíèå! Íàçâàíèå êîëîíêè  \"Noncommercial Positions-Long (All)\" èçìåíåíî CFTC!");
          if (n10==0)Alert("WILLCO_4 Âíèìàíèå! Íàçâàíèå êîëîíêè  \"Noncommercial Positions-Short (All)\" èçìåíåíî CFTC!");
          if (n12==0)Alert("WILLCO_4 Âíèìàíèå! Íàçâàíèå êîëîíêè  \"Commercial Positions-Long (All)\" èçìåíåíî CFTC!");
          if (n13==0)Alert("WILLCO_4 Âíèìàíèå! Íàçâàíèå êîëîíêè  \"Commercial Positions-Short (All)\" èçìåíåíî CFTC!");
          if (n16==0)Alert("WILLCO_4 Âíèìàíèå! Íàçâàíèå êîëîíêè  \"Nonreportable Positions-Long (All)\" èçìåíåíî CFTC!");
          if (n17==0)Alert("WILLCO_4 Âíèìàíèå! Íàçâàíèå êîëîíêè  \"Nonreportable Positions-Short (All)\" èçìåíåíî CFTC!");
          z=1;
          break;
          FileClose(Handle);
          return(0);
         }
        }
        //--------------
        if (i>2 && e==0)
        {
         if (StringTrimLeft(text)==code || StringTrimRight(text)==code)e=i;
        }
        //----
        if (q<289 && c==0)
        {
         if (StringLen(text)<9 && i>1)
         {
          c=1;
          q++;
          y=StrToInteger(text);
          if (y>f)f=y;
         }
        }
        //----
        if (i==20 && e!=0)
        {
         k++;
         error=1;
         int de=e-n4;
         iO=StrToDouble(TEXT[n8+de]);
         n=TEXT[1];
         if (de!=0)n=TEXT[1]+", "+TEXT[2];
         O[k]=iO;
         L1[k]=StrToDouble(TEXT[n9+de]);
         L2[k]=StrToDouble(TEXT[n12+de]);
         L3[k]=StrToDouble(TEXT[n16+de]);
         S1[k]=StrToDouble(TEXT[n10+de]);
         S2[k]=StrToDouble(TEXT[n13+de]);
         S3[k]=StrToDouble(TEXT[n17+de]);
         CO1[k]=L1[k]-S1[k];
         CO2[k]=L2[k]-S2[k];
         CO3[k]=L3[k]-S3[k];
         E1[k]=NormalizeDouble(100*CO1[k]/iO,4);
         E2[k]=NormalizeDouble(100*CO2[k]/iO,4);
         E3[k]=NormalizeDouble(100*CO3[k]/iO,4);
         day=StringSubstr(TEXT[n3+de],8,2);
         month=StringSubstr(TEXT[n3+de],5,2);
         year=StringSubstr(TEXT[n3+de],0,4);
         DATE[k]=StrToTime(""+year+"."+month+"."+day+"");
         int xf=(DATE[1]-ff)/604800;
        }
        e1=StringTrimRight(TEXT[e]);
        e2=StringTrimLeft(TEXT[e]);
        if (e1!=code && e2!=code && error==1)
        {
         error=0;
         break;
        }
        if (xf+1==k && keo==1)break;
        if (FileIsLineEnding(Handle)==true)
        {
         i=0;
         c=0;
        }
        if (FileIsEnding(Handle)==true)break;
       }
       FileClose(Handle);
      }
      }
      err++;
      e=0;
     }
     //----
     string ed=f;
     string o1=StringSubstr(ed,4,2);
     string o2=StringSubstr(ed,2,2);
     string o3=StringSubstr(ed,0,2);
     datetime u=StrToTime("20"+""+o3+"."+o2+"."+o1+"");
     if (DATE[1]<u)Alert("WILLCO_4 Äëÿ äàòû "+TimeToStr(u,TIME_DATE)+" åæåíåäåëüíûé îò÷åò ïî ôüþ÷åðñó "+n+" íå îïóáëèêîâàí");
     //------------------------------------------------------------------------ Block 5
     int E=FILE_READ;
     if (oe==1)E=FILE_CSV;
     File_Write_Name=code+".txt";
     Handle=FileOpen(File_Write_Name,E|FILE_WRITE,",");
     if(Handle==-1)
     {
      error=GetLastError( );
      if (error==4103 || error==5004)
      {
       Alert("WILLCO_4 Ôàéë "+File_Write_Name+" íå íàéäåí  Block 5A");       // Block 5A
      }
      else
      {
      if (error!=0)
      {
       Alert("WILLCO_4 Îøèáêà: "+error+" ïðè ïîïûòêå ñîçäàòü ôàéë "+File_Write_Name+"  Block 5B");  // Block 5B
      }
      }
      FileClose(Handle);
      z=1;
      return(0);
     }
     //----
     if (oe==1)
     {
      for (i=k; i>0; i--)
      {
       y=FileWrite(Handle,DATE[i],O[i],E1[i],E2[i],E3[i],CO1[i],CO2[i],CO3[i],L1[i],L2[i],L3[i],S1[i],S2[i],S3[i]);
       if (y<0) 
       { 
        Alert("WILLCO_4 Îøèáêà: "+GetLastError( )+" ïðè çàïèñè â ôàéë "+File_Write_Name+"  Block 5C");   // Block 5C
        z=1;
        FileClose(Handle);
        break;
        return(0);
       }
      }
      Alert("WILLCO_4 Ôàéë "+File_Write_Name+" óñïåøíî ñîçäàí ",
      "\nè ñîäåðæèò äàííûå äëÿ "+k+" íåäåëü, ",
      "\nÏî ôüþ÷åðñó "+n+". ",
      "\nÏîñëåäíèé îò÷åò "+TimeToStr(DATE[1],TIME_DATE)+"");
      GlobalVariableSet(code,0);
      z=0;
     }
     else
     {
     if (keo==1 && xf>0)
     {
      FileSeek(Handle,0,SEEK_END);
      for (i=xf; i>0; i--)
      {
       y=FileWrite(Handle,DATE[i],O[i],E1[i],E2[i],E3[i],CO1[i],CO2[i],CO3[i],L1[i],L2[i],L3[i],S1[i],S2[i],S3[i]);
       if (y<0)
       {
        Alert("WILLCO_4 Îøèáêà: "+GetLastError( )+" ïðè äîçàïèñè â ôàéë "+File_Write_Name+"  Block 5D"); // Block 5D
        z=1;
        FileClose(Handle);
        break;
        return(0);
       }
      }
      Alert("WILLCO_4 Ôàéë "+File_Write_Name+" óñïåøíî îáíîâëåí. ",
      "\nÄîãðóæåíî åæåíåäåëüíûõ îò÷åòîâ "+xf+". ",
      "\nÏî ôüþ÷åðñó "+n+". ",
      "\nÏîñëåäíèé îò÷åò "+TimeToStr(DATE[1],TIME_DATE)+"");
      z=0;
     }
     }
     if (keo==1 && xf==0)
     {
      Alert("WILLCO_4 Îáíîâëåíèå ôàéëà "+File_Write_Name+" ïî ôüþ÷åðñó "+n+" åùå íå òðåáóåòñÿ");
      FileClose(Handle);
      return(0);
     }
     FileClose(Handle);
    }
    //--------------------------------------------- Block 6
    if (z!=1 || xf>0)
    {
     io=0;
     i=0;
     y=0;
     qi1=StringTrimLeft(ObjectDescription("IR8e23Ss7G59") );
     code=StringTrimRight(qi1);
     File_Read_Name=code+".txt";
     Handle=FileOpen(File_Read_Name,FILE_CSV|FILE_READ,",");
     if (Handle>0)
     {
      x=0;
      while(FileIsEnding(Handle)==false)
      {
       FileReadNumber(Handle);
       if (FileIsLineEnding(Handle)==true)
       {
        i++;
        FileSeek(Handle,67,SEEK_CUR);
       }
       if (FileIsEnding(Handle)==true)break;
      }
      FileSeek(Handle,0,SEEK_SET);
      while(FileIsEnding(Handle)==false)
      {
       y++;
       value[y]=FileReadNumber(Handle);
       if (y==14)
       {
        io++;
        k=i-io;
        DA[k]=value[1];
        OI[k]=value[2];
        X1[k]=value[3];
        X2[k]=value[4];
        X3[k]=value[5];
        C1[k]=value[6];
        C2[k]=value[7];
        C3[k]=value[8];
        LO1[k]=value[9];
        LO2[k]=value[10];
        LO3[k]=value[11];
        SH1[k]=value[12];
        SH2[k]=value[13];
        SH3[k]=value[14];
       }
       if (FileIsLineEnding(Handle)==true)y=0;
       if (FileIsEnding(Handle)==true)break;
      }
      hist=io;
      GlobalVariableSet(code,0);
     }
     else
     {
     if (Handle<0)
     {
      error=GetLastError( );
      if (error==4103 || error==5004)
      {
       if (x!=1)
       {
        Alert("WILLCO_4 Ïîæàëóéñòà äîæäèòåñü ïðèõîäà òèêà, èëè ",
        "\níàæìèòå êíîïêó Refresh(Îáíîâèòü) îáíîâëåíèÿ ãðàôèêà. ",
        "\nÑîçäàíèå ôàéëà çàíèìàåò 2-8 ñåêóíä");
        GlobalVariableSet("Create a file "+code+".txt ?",1);
       }
      }
      else
      {
      if(error!=0 && x!=1)
      { 
       Alert("WILLCO_4 Îøèáêà: "+error+" ïðè ïîïûòêå îòêðûòü ôàéë "+File_Read_Name+"  Block 6");  // Block 6
      }
      }
      x=1;
     }
     }
     z=1;
     FileClose(Handle);
    }
    if (x==1)return(0);
    //-----------------
    double high=High[0];
    double low=Low[0];
    if (T!=Time[0] || ext1!=high || ext2!=low || hh>0 || xf>0)
    {
     hh--;
     T=Time[0];
     ext1=high;
     ext2=low;
     int l=period_OI_Index;
     if (Spread_Movement_Index==true)l=period;
     bool t0=false;
     if (Net_Pct==false && Net==false && OI_==false && Long_Pct==false 
     && Short_Pct==false && Long==false && Short==false)t0=true;
     bool t1=false;
     if (COT_Index==false && t0==true && Movement_Index==false && Spread_Movement_Index==false)t1=true;
     bool t2=false;
     if (Long==true || Short==true || Net==true || Long_Pct==true || Short_Pct==true || Net_Pct==true)t2=true;
     bool t3=false;
     if (Movement_Index==true || Spread_Movement_Index==true)t3=true;
     bool t4=false;
     if (OI_Index==true || Spread_Movement_Index==true)t4=true;
     bool t5=false;
     if (COT_Index==true || t3==true)t5=true;
     for (i=0; i<Bars; i++)
     {
      datetime time=Time[i];
      if (time<=DA[d])
      {
       q=0;
       for (y=1; y<26; y++)
       {
        if (time>DA[d+y])
        {
         break;
        }
        else
        {
        if (time<=DA[d+y])
        {
         q++;
        }
        }
       }
       d=d+q;
       //----
       if (t4==true)
       {
        MaxIdx=ArrayMaximum(OI,l,d);
        MinIdx=ArrayMinimum(OI,l,d);
        g3=100*(OI[d]-OI[MinIdx])/(OI[MaxIdx]-OI[MinIdx]);
        if (Spread_Movement_Index==true)
        {
         b=d+period_Movement_Index;
         MaxIdx=ArrayMaximum(OI,period,b);
         MinIdx=ArrayMinimum(OI,period,b);
         g3=g3-100*(OI[b]-OI[MinIdx])/(OI[MaxIdx]-OI[MinIdx]);
        }
       }
       //----
       if (t1==true)
       {
        MaxIdx=ArrayMaximum(X1,period,d);
        MinIdx=ArrayMinimum(X1,period,d);
        g0=100*az-100*zi*(X1[d]-X1[MinIdx])/(X1[MaxIdx]-X1[MinIdx]);
        MaxIdx=ArrayMaximum(X2,period,d);
        MinIdx=ArrayMinimum(X2,period,d);
        g1=100*az-100*zi*(X2[d]-X2[MinIdx])/(X2[MaxIdx]-X2[MinIdx]);
        MaxIdx=ArrayMaximum(X3,period,d);
        MinIdx=ArrayMinimum(X3,period,d);
        g2=100*az-100*zi*(X3[d]-X3[MinIdx])/(X3[MaxIdx]-X3[MinIdx]);
       }
       //----
       if (t5==true)
       {
        MaxIdx=ArrayMaximum(C1,period,d);
        MinIdx=ArrayMinimum(C1,period,d);
        g0=100*az-100*zi*(C1[d]-C1[MinIdx])/(C1[MaxIdx]-C1[MinIdx]);
        MaxIdx=ArrayMaximum(C2,period,d);
        MinIdx=ArrayMinimum(C2,period,d);
        g1=100*az-100*zi*(C2[d]-C2[MinIdx])/(C2[MaxIdx]-C2[MinIdx]);
        MaxIdx=ArrayMaximum(C3,period,d);
        MinIdx=ArrayMinimum(C3,period,d);
        g2=100*az-100*zi*(C3[d]-C3[MinIdx])/(C3[MaxIdx]-C3[MinIdx]);
        if (t3==true)
        {
         b=d+period_Movement_Index;
         MaxIdx=ArrayMaximum(C1,period,b);
         MinIdx=ArrayMinimum(C1,period,b);
         g0=g0-100*az+100*zi*(C1[b]-C1[MinIdx])/(C1[MaxIdx]-C1[MinIdx]);
         MaxIdx=ArrayMaximum(C2,period,b);
         MinIdx=ArrayMinimum(C2,period,b);
         g1=g1-100*az+100*zi*(C2[b]-C2[MinIdx])/(C2[MaxIdx]-C2[MinIdx]);
         MaxIdx=ArrayMaximum(C3,period,b);
         MinIdx=ArrayMinimum(C3,period,b);
         g2=g2-100*az+100*zi*(C3[b]-C3[MinIdx])/(C3[MaxIdx]-C3[MinIdx]);
         if (Spread_Movement_Index==true)
         {
          g0=g0-g3;
          g1=g1-g3;
          g2=g2-g3;
         }
        }
       }
       //----
       if (OI_==true)g3=OI[d];
       if (Long==true)
       {
        g0=rr*LO1[d];
        g1=rr*LO2[d];
        g2=rr*LO3[d];
       }
       //----
       if (Short==true)
       {
        g0=rr*SH1[d];
        g1=rr*SH2[d];
        g2=rr*SH3[d];
       }
       //----
       if (Net==true)
       {
        g0=rr*C1[d];
        g1=rr*C2[d];
        g2=rr*C3[d];
       }
       //----
       if (Long_Pct==true)
       {
        g0=rr*100*LO1[d]/OI[d];
        g1=rr*100*LO2[d]/OI[d];
        g2=rr*100*LO3[d]/OI[d];
       }
       //----
       if (Short_Pct==true)
       {
        g0=rr*100*SH1[d]/OI[d];
        g1=rr*100*SH2[d]/OI[d];
        g2=rr*100*SH3[d]/OI[d];
       }
       //----
       if (Net_Pct==true)
       {
        g0=rr*X1[d];
        g1=rr*X2[d];
        g2=rr*X3[d];
       }
       d++;
      }
      //----
      if (d>0)
      {
       if (OI_Index==true && d<=io-l)Buffer3[i]=g3;
       if (t0==true)
       {
        Buffer0[i]=g0;
        Buffer1[i]=g1;
        Buffer2[i]=g2;
        Buffer4[i]=100;
        Buffer5[i]=50;
        Buffer6[i]=0;
        if (t3==true)
        {
         Buffer0[i]=g0;
         Buffer1[i]=g1;
         Buffer2[i]=g2;
         if (Movement_Index==true)
         {
          Buffer4[i]=40;
          Buffer5[i]=0;
          Buffer6[i]=-40; 
         }
         else
         {
         if (Spread_Movement_Index==true)
         {
          Buffer4[i]=60;
          Buffer5[i]=0;
          Buffer6[i]=-60; 
         }
         }
        }
        if (d>=io-period)break;
       }
       else
       {
       if (t0==false)
       {
        if (OI_==true)
        {
         Buffer3[i]=g3;
         Buffer6[i]=0;
        }
        if (t2==true)
        {
         Buffer0[i]=g0;
         Buffer1[i]=g1;
         Buffer2[i]=g2;
         Buffer6[i]=0;
        }
        if (d>=io)break;
       }
       }
      }
     }
     //----
     b=2; 
     to="("+period+")";
     if (OI_==true || Net==true || Long == true || Short==true)
     {
      b=0;
      to="";
     }
     if (Net_Pct==true || Long_Pct==true || Short_Pct==true)to="";
     IndicatorDigits(b);
     name=xgs+to;
     IndicatorShortName(""+name+". History "+hist+" weeks. Last report "+TimeToStr(DA[0],TIME_DATE)+" ");
     SetIndexLabel(0,name + "  Noncommercial");
     SetIndexLabel(1,name + "  Commercial");
     SetIndexLabel(2,name + "  Nonreportable");
     name="OI_Index("+period_OI_Index+")";
     if (OI_==true)name="OI";
     SetIndexLabel(3,name);
     if (p<PERIOD_D1)return(0);
     g1=1000;
     g0=0;
     for (i=4; i>0; i--)
     {
      iO=High[i]-Low[i];
      if (g1>iO)
      {
       g1=iO;
       if (i==1)g0=g1;
      }
     }
     g1=0;
     if (AR_period>Bars-1)AR_period=Bars-1; 
     for (i=AR_period; i>0; i--)
     {
      g1=g1+High[i]-Low[i];
     }
     g2=g1/AR_period;
     x1=" ";
     if (point==0)return(0);
     if (g0!=0)x1=" MR4 = "+DoubleToStr(g0/point,0);
     text=DoubleToStr(0.01*AR_percent,2)+"*AR("+AR_period +") = "+DoubleToStr(0.01*AR_percent*g2/point,0);
     if (ObjectFind("X18E3FH2wDar1")==-1)
     {
  	   ObjectCreate("X18E3FH2wDar1",OBJ_LABEL,1,0,0,0,0,0,0);
      ObjectSet("X18E3FH2wDar1",OBJPROP_XDISTANCE,0);
      ObjectSet("X18E3FH2wDar1",OBJPROP_YDISTANCE,15);
      ObjectCreate("gK01R4VBh1",OBJ_LABEL,1,0,0,0,0,0,0);
      ObjectSet("gK01R4VBh1",OBJPROP_XDISTANCE,0);
      ObjectSet("gK01R4VBh1",OBJPROP_YDISTANCE,29);
      ObjectCreate("Qi2uC6ZM3J0l1",OBJ_LABEL,1,0,0,0,0,0,0);
      ObjectSet("Qi2uC6ZM3J0l1",OBJPROP_XDISTANCE,0);
      ObjectSet("Qi2uC6ZM3J0l1",OBJPROP_YDISTANCE,53);
     }
     ObjectSetText("X18E3FH2wDar1"," "+text+"   "+x1+"",10,"Verdana",LightSlateGray);
     if (g2==0)return(0);
     iO=100*(high-Open[0])/g2;
     g0=100*(Open[0]-low)/g2;
     text=DoubleToStr(iO,0);
     name=DoubleToStr(g0,0);
     ObjectSetText("gK01R4VBh1"," "+text+" ",13,"Verdana",C'0,191,0');
     ObjectSetText("Qi2uC6ZM3J0l1"," "+name+"",13,"Verdana",C'255,108,53');
    }
  return(0);
 }

Comments