#78951 - Sat Jul 09 2016 05:49 PM
Re: Заказ индикаторов в TSLab
[Re: alexqem]
|
stranger
Registered: Sun Oct 12 2014
Записи: 18
|
Добрый день! В квике на график можно вывести в виде свечей практически любой параметр из таблицы параметров, в тслабе это не реализовано. Сделайте пожалуйста кубик, который на вход будет получать данные типа double (например ОИ, BidQty, AskQty и тд.), а на выходе выдавать данные типа bar, чтобы на графике отображались свечи.
|
Наверх
|
|
|
|
#78954 - Sat Jul 09 2016 07:07 PM
Re: Заказ индикаторов в TSLab
[Re: Barda4ok]
|
writer
Registered: Sun Nov 21 2010
Записи: 428
|
Кубиком тут дело не может ограничится, надо на более глубоком уровне такую возможность закладывать, это влечет существенные переделки программы. Хотя если разработчики сделают такое, я только поаплодирую. Но, думаю, вряд ли. Им слабо.
_________________________
Не пишите мне! Никому ничего делать не буду.
|
Наверх
|
|
|
|
#78958 - Sun Jul 10 2016 09:02 AM
Re: Заказ индикаторов в TSLab
[Re: jhgjrht]
|
Pooh-Bah
Registered: Wed Oct 26 2011
Записи: 2108
Loc: botland
|
из double кубиком - свечи без теней
|
Наверх
|
|
|
|
#78968 - Mon Jul 11 2016 08:44 AM
Re: Заказ индикаторов в TSLab
[Re: Barda4ok]
|
TSLab
Carpal Tunnel
Registered: Sun Oct 17 2010
Записи: 8139
|
|
Наверх
|
|
|
|
#78974 - Mon Jul 11 2016 11:23 AM
Re: Заказ индикаторов в TSLab
[Re: ViL]
|
Carpal Tunnel
Registered: Thu Sep 27 2012
Записи: 2860
|
нельзя просто так взять и сделать из чего то свечу с тенями. Потому что нельзя. Данные идут с определенной дискретизацией и проблема больше в этом а не в разработчиках.
_________________________
__
|
Наверх
|
|
|
|
#79019 - Tue Jul 12 2016 04:45 PM
Re: Заказ индикаторов в TSLab
[Re: ra81]
|
stranger
Registered: Sun Oct 12 2014
Записи: 18
|
почему тогда в квике можно просто взять и сделать?
|
Наверх
|
|
|
|
#79030 - Wed Jul 13 2016 10:21 AM
Re: Заказ индикаторов в TSLab
[Re: Barda4ok]
|
Carpal Tunnel
Registered: Thu Sep 27 2012
Записи: 2860
|
почему тогда в квике можно просто взять и сделать? Потому что либо там делается криво, либо используются тиковые данные. А в тслабе у вас они не всегда имеются. Если вы хотите на пальцах, то я могу пояснить. Правда для этого предоставьте что именно делается в квике? Тогда я смогу на конкретном примере описать.
_________________________
__
|
Наверх
|
|
|
|
#79382 - Thu Aug 18 2016 11:39 AM
Re: Заказ индикаторов в TSLab
[Re: ra81]
|
stranger
Registered: Fri Apr 17 2015
Записи: 10
|
Здравствуйте. Может кто-нибудь переделать стандартный Zig-zag, чтобы он не выдавал последний луч, который перерисовывается, а выдавал уже на 100% зафиксированное значение?
|
Наверх
|
|
|
|
#79384 - Thu Aug 18 2016 11:57 AM
Re: Заказ индикаторов в TSLab
[Re: Surfer]
|
Carpal Tunnel
Registered: Thu Sep 27 2012
Записи: 2860
|
ищите. было на форуме
_________________________
__
|
Наверх
|
|
|
|
#79386 - Thu Aug 18 2016 01:14 PM
Re: Заказ индикаторов в TSLab
[Re: ra81]
|
stranger
Registered: Fri Apr 17 2015
Записи: 10
|
Если речь идет о ZigZagMS, то выдает ошибку "Не удалось загрузить файл или сборку "ZigZagMS.dll" либо одну из их зависимостей. не является приложением Win32. (Исключение из HRESULT: 0x800700C1)". Посмотреть не удалось, к сожалению. А другие не могу найти на форуме.
|
Наверх
|
|
|
|
#79387 - Thu Aug 18 2016 01:38 PM
Re: Заказ индикаторов в TSLab
[Re: Surfer]
|
stranger
Registered: Thu Aug 04 2016
Записи: 6
|
Я здесь впервые и имею вопрос: Есть ли где описание приведёных в сборке vvTSLtools индикаторов; как их использовать и т.п. Гугл в помощь не идёт некоторые находятся, а большинство отсылает или сюда или к продавцам роботов.
|
Наверх
|
|
|
|
#79392 - Thu Aug 18 2016 06:37 PM
Re: Заказ индикаторов в TSLab
[Re: DavSerM]
|
Carpal Tunnel
Registered: Thu Sep 27 2012
Записи: 2860
|
нет. по набору от вито нет описания.
_________________________
__
|
Наверх
|
|
|
|
#79394 - Thu Aug 18 2016 10:57 PM
Re: Заказ индикаторов в TSLab
[Re: ra81]
|
stranger
Registered: Thu Aug 04 2016
Записи: 6
|
Что же делать бедному студенту?
|
Наверх
|
|
|
|
#79408 - Sun Aug 21 2016 01:50 PM
Re: Заказ индикаторов в TSLab
[Re: DavSerM]
|
Carpal Tunnel
Registered: Thu Sep 27 2012
Записи: 2860
|
догадываться.
_________________________
__
|
Наверх
|
|
|
|
#79514 - Tue Aug 30 2016 01:51 PM
Re: Заказ индикаторов в TSLab
[Re: ra81]
|
stranger
Registered: Thu Aug 04 2016
Записи: 6
|
А нельзя ли сделать под TSLab вот этот индикатор"shved_supply_and_demand" или "зоны спроса и предложения" //+------------------------------------------------------------------+ //| shved_supply_and_demand.mq4 | //+------------------------------------------------------------------+ #property copyright "Shved" #property link "http://ruforum_mt5_com/members/11434-shved" #property description "edited by eevviill" #property description "on-off zones,build 600+,nearest zones in buffers"
#property indicator_chart_window #property indicator_buffers 8 #property indicator_color1 Red #property indicator_color2 Red #property indicator_color3 DodgerBlue #property indicator_color4 DodgerBlue
extern int BackLimit=1000;
extern string pus1="/////////////////////////////////////////////////"; extern bool zone_show_weak=true; extern bool zone_show_untested = true; extern bool zone_show_turncoat = false; extern double zone_fuzzfactor=0.75;
extern string pus2="/////////////////////////////////////////////////"; extern bool fractals_show=false; extern double fractal_fast_factor = 3.0; extern double fractal_slow_factor = 6.0; extern bool SetGlobals=true;
extern string pus3="/////////////////////////////////////////////////"; extern bool zone_solid=true; extern int zone_linewidth=1; extern int zone_style=0; extern bool zone_show_info=true; extern int zone_label_shift=4; extern bool zone_merge=true; extern bool zone_extend=true;
extern string pus4="/////////////////////////////////////////////////"; extern bool zone_show_alerts = false; extern bool zone_alert_popups = true; extern bool zone_alert_sounds = true; extern int zone_alert_waitseconds=300;
extern string pus5="/////////////////////////////////////////////////"; extern int Text_size=8; extern string Text_font = "Courier New"; extern color Text_color = White; extern string sup_name = "Sup"; extern string res_name = "Res"; extern string test_name= "Retests"; extern color color_support_weak = DarkSlateGray; extern color color_support_untested = SeaGreen; extern color color_support_verified = Green; extern color color_support_proven = LimeGreen; extern color color_support_turncoat = OliveDrab; extern color color_resist_weak = Indigo; extern color color_resist_untested = Orchid; extern color color_resist_verified = Crimson; extern color color_resist_proven = Red; extern color color_resist_turncoat = DarkOrange;
double FastDnPts[],FastUpPts[]; double SlowDnPts[],SlowUpPts[];
double zone_hi[1000],zone_lo[1000]; int zone_start[1000],zone_hits[1000],zone_type[1000],zone_strength[1000],zone_count=0; bool zone_turn[1000];
#define ZONE_SUPPORT 1 #define ZONE_RESIST 2
#define ZONE_WEAK 0 #define ZONE_TURNCOAT 1 #define ZONE_UNTESTED 2 #define ZONE_VERIFIED 3 #define ZONE_PROVEN 4
#define UP_POINT 1 #define DN_POINT -1
int time_offset=0;
double ner_lo_zone_P1[]; double ner_lo_zone_P2[]; double ner_hi_zone_P1[]; double ner_hi_zone_P2[]; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int init() { IndicatorBuffers(4);
SetIndexBuffer(0,SlowDnPts); SetIndexBuffer(1,SlowUpPts); SetIndexBuffer(2,FastDnPts); SetIndexBuffer(3,FastUpPts);
if(fractals_show==true) { SetIndexStyle(0,DRAW_ARROW,0,3); SetIndexStyle(1,DRAW_ARROW,0,3); SetIndexStyle(2,DRAW_ARROW,0,1); SetIndexStyle(3,DRAW_ARROW,0,1); SetIndexArrow(0,218); SetIndexArrow(1,217); SetIndexArrow(2,218); SetIndexArrow(3,217); } else { SetIndexStyle(0,DRAW_NONE); SetIndexStyle(1,DRAW_NONE); SetIndexStyle(2,DRAW_NONE); SetIndexStyle(3,DRAW_NONE); }
SetIndexBuffer(4,ner_hi_zone_P1); SetIndexBuffer(5,ner_hi_zone_P2); SetIndexBuffer(6,ner_lo_zone_P1); SetIndexBuffer(7,ner_lo_zone_P2);
SetIndexStyle(4,DRAW_NONE); SetIndexStyle(5,DRAW_NONE); SetIndexStyle(6,DRAW_NONE); SetIndexStyle(7,DRAW_NONE);
SetIndexLabel(4,"ner up zone P1"); SetIndexLabel(5,"ner up zone P2"); SetIndexLabel(6,"ner dn zone P1"); SetIndexLabel(7,"ner dn zone P2");
IndicatorDigits(Digits);
return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int deinit() { DeleteZones(); DeleteGlobalVars(); return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { if(NewBar()==true) { int old_zone_count=zone_count;
FastFractals(); SlowFractals(); DeleteZones(); FindZones(); DrawZones(); if(zone_count<old_zone_count) DeleteOldGlobalVars(old_zone_count); }
if(zone_show_info==true) { for(int i=0; i<zone_count; i++) { string lbl; if(zone_strength[i]==ZONE_PROVEN) lbl="Proven"; else if(zone_strength[i]==ZONE_VERIFIED) lbl="Verified"; else if(zone_strength[i]==ZONE_UNTESTED) lbl="Untested"; else if(zone_strength[i]==ZONE_TURNCOAT) lbl="Turncoat"; else lbl="Weak";
if(zone_type[i]==ZONE_SUPPORT) lbl=lbl+" "+sup_name; else lbl=lbl+" "+res_name;
if(zone_hits[i]>0 && zone_strength[i]>ZONE_UNTESTED) { if(zone_hits[i]==1) lbl=lbl+", "+test_name+"="+zone_hits[i]; else lbl=lbl+", "+test_name+"="+zone_hits[i]; }
int adjust_hpos; int wbpc=WindowBarsPerChart(); int k=Period()*60+(20+StringLen(lbl));
if(wbpc<80) adjust_hpos=Time[0]+k*4; else if(wbpc<125) adjust_hpos=Time[0]+k*8; else if(wbpc<250) adjust_hpos=Time[0]+k*15; else if(wbpc<480) adjust_hpos=Time[0]+k*29; else if(wbpc<950) adjust_hpos=Time[0]+k*58; else adjust_hpos=Time[0]+k*115;
//
int shift=k*zone_label_shift; double vpos=zone_hi[i]-(zone_hi[i]-zone_lo[i])/2;
if(zone_strength[i]==ZONE_WEAK && zone_show_weak==false) continue; if(zone_strength[i]==ZONE_UNTESTED && zone_show_untested==false) continue; if(zone_strength[i]==ZONE_TURNCOAT && zone_show_turncoat==false) continue;
string s="SSSR#"+i+"LBL"; ObjectCreate(s,OBJ_TEXT,0,0,0); ObjectSet(s,OBJPROP_TIME1,adjust_hpos+shift); ObjectSet(s,OBJPROP_PRICE1,vpos); ObjectSetText(s,StringRightPad(lbl,36," "),Text_size,Text_font,Text_color); } }
CheckAlerts();
return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CheckAlerts() { static int lastalert=0;
if(zone_show_alerts==false) return;
if(Time[0]-lastalert>zone_alert_waitseconds) if(CheckEntryAlerts()==true) lastalert=Time[0]; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool CheckEntryAlerts() { // check for entries for(int i=0; i<zone_count; i++) { if(Close[0]>=zone_lo[i] && Close[0]<zone_hi[i]) { if(zone_show_alerts==true) { if(zone_alert_popups==true) { if(zone_type[i]==ZONE_SUPPORT) Alert(Symbol()+TimeFrameToString(Period())+": Support Zone Entered"); else Alert(Symbol()+TimeFrameToString(Period())+": Resistance Zone Entered"); }
if(zone_alert_sounds==true) PlaySound("alert_wav"); }
return(true); } }
return(false); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void DeleteGlobalVars() { if(SetGlobals==false) return;
GlobalVariableDel("SSSR_Count_"+Symbol()+Period()); GlobalVariableDel("SSSR_Updated_"+Symbol()+Period());
int old_count=zone_count; zone_count=0; DeleteOldGlobalVars(old_count); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void DeleteOldGlobalVars(int old_count) { if(SetGlobals==false) return;
for(int i=zone_count; i<old_count; i++) { GlobalVariableDel("SSSR_HI_"+Symbol()+Period()+i); GlobalVariableDel("SSSR_LO_"+Symbol()+Period()+i); GlobalVariableDel("SSSR_HITS_"+Symbol()+Period()+i); GlobalVariableDel("SSSR_STRENGTH_"+Symbol()+Period()+i); GlobalVariableDel("SSSR_AGE_"+Symbol()+Period()+i); } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void FindZones() { int i,j,shift,bustcount=0,testcount=0; double hival,loval; bool turned=false,hasturned=false;
double temp_hi[1000],temp_lo[1000]; int temp_start[1000],temp_hits[1000],temp_strength[1000],temp_count=0; bool temp_turn[1000],temp_merge[1000]; int merge1[1000],merge2[1000],merge_count=0;
// iterate through zones from oldest to youngest (ignore recent 5 bars), // finding those that have survived through to the present___ for(shift=MathMin(Bars-1,BackLimit); shift>5; shift--) { double atr= iATR(NULL,0,7,shift); double fu = atr/2 * zone_fuzzfactor; bool isWeak; bool touchOk= false; bool isBust = false;
if(FastUpPts[shift]>0.001) { // a zigzag high point isWeak=true; if(SlowUpPts[shift]>0.001) isWeak=false;
hival=High[shift]; if(zone_extend==true) hival+=fu;
loval=MathMax(MathMin(Close[shift],High[shift]-fu),High[shift]-fu*2); turned=false; hasturned=false; isBust=false;
bustcount = 0; testcount = 0;
for(i=shift-1; i>=0; i--) { if((turned==false && FastUpPts[i]>=loval && FastUpPts[i]<=hival) || (turned==true && FastDnPts[i]<=hival && FastDnPts[i]>=loval)) { // Potential touch, just make sure its been 10+candles since the prev one touchOk=true; for(j=i+1; j<i+11; j++) { if((turned==false && FastUpPts[j]>=loval && FastUpPts[j]<=hival) || (turned==true && FastDnPts[j]<=hival && FastDnPts[j]>=loval)) { touchOk=false; break; } }
if(touchOk==true) { // we have a touch_ If its been busted once, remove bustcount // as we know this level is still valid & has just switched sides bustcount=0; testcount++; } }
if((turned==false && High[i]>hival) || (turned==true && Low[i]<loval)) { // this level has been busted at least once bustcount++;
if(bustcount>1 || isWeak==true) { // busted twice or more isBust=true; break; }
if(turned == true) turned = false; else if(turned==false) turned=true;
hasturned=true;
// forget previous hits testcount=0; } }
if(isBust==false) { // level is still valid, add to our list temp_hi[temp_count] = hival; temp_lo[temp_count] = loval; temp_turn[temp_count] = hasturned; temp_hits[temp_count] = testcount; temp_start[temp_count] = shift; temp_merge[temp_count] = false;
if(testcount>3) temp_strength[temp_count]=ZONE_PROVEN; else if(testcount>0) temp_strength[temp_count]=ZONE_VERIFIED; else if(hasturned==true) temp_strength[temp_count]=ZONE_TURNCOAT; else if(isWeak==false) temp_strength[temp_count]=ZONE_UNTESTED; else temp_strength[temp_count]=ZONE_WEAK;
temp_count++; } } else if(FastDnPts[shift]>0.001) { // a zigzag low point isWeak=true; if(SlowDnPts[shift]>0.001) isWeak=false;
loval=Low[shift]; if(zone_extend==true) loval-=fu;
hival=MathMin(MathMax(Close[shift],Low[shift]+fu),Low[shift]+fu*2); turned=false; hasturned=false;
bustcount = 0; testcount = 0; isBust=false;
for(i=shift-1; i>=0; i--) { if((turned==true && FastUpPts[i]>=loval && FastUpPts[i]<=hival) || (turned==false && FastDnPts[i]<=hival && FastDnPts[i]>=loval)) { // Potential touch, just make sure its been 10+candles since the prev one touchOk=true; for(j=i+1; j<i+11; j++) { if((turned==true && FastUpPts[j]>=loval && FastUpPts[j]<=hival) || (turned==false && FastDnPts[j]<=hival && FastDnPts[j]>=loval)) { touchOk=false; break; } }
if(touchOk==true) { // we have a touch_ If its been busted once, remove bustcount // as we know this level is still valid & has just switched sides bustcount=0; testcount++; } }
if((turned==true && High[i]>hival) || (turned==false && Low[i]<loval)) { // this level has been busted at least once bustcount++;
if(bustcount>1 || isWeak==true) { // busted twice or more isBust=true; break; }
if(turned == true) turned = false; else if(turned==false) turned=true;
hasturned=true;
// forget previous hits testcount=0; } }
if(isBust==false) { // level is still valid, add to our list temp_hi[temp_count] = hival; temp_lo[temp_count] = loval; temp_turn[temp_count] = hasturned; temp_hits[temp_count] = testcount; temp_start[temp_count] = shift; temp_merge[temp_count] = false;
if(testcount>3) temp_strength[temp_count]=ZONE_PROVEN; else if(testcount>0) temp_strength[temp_count]=ZONE_VERIFIED; else if(hasturned==true) temp_strength[temp_count]=ZONE_TURNCOAT; else if(isWeak==false) temp_strength[temp_count]=ZONE_UNTESTED; else temp_strength[temp_count]=ZONE_WEAK;
temp_count++; } } }
// look for overlapping zones___ if(zone_merge==true) { merge_count=1; int iterations=0; while(merge_count>0 && iterations<3) { merge_count=0; iterations++;
for(i=0; i<temp_count; i++) temp_merge[i]=false;
for(i=0; i<temp_count-1; i++) { if(temp_hits[i]==-1 || temp_merge[j]==true) continue;
for(j=i+1; j<temp_count; j++) { if(temp_hits[j]==-1 || temp_merge[j]==true) continue;
if((temp_hi[i]>=temp_lo[j] && temp_hi[i]<=temp_hi[j]) || (temp_lo[i] <= temp_hi[j] && temp_lo[i] >= temp_lo[j]) || (temp_hi[j] >= temp_lo[i] && temp_hi[j] <= temp_hi[i]) || (temp_lo[j] <= temp_hi[i] && temp_lo[j] >= temp_lo[i])) { merge1[merge_count] = i; merge2[merge_count] = j; temp_merge[i] = true; temp_merge[j] = true; merge_count++; } } }
// ___ and merge them ___ for(i=0; i<merge_count; i++) { int target = merge1[i]; int source = merge2[i];
temp_hi[target] = MathMax(temp_hi[target], temp_hi[source]); temp_lo[target] = MathMin(temp_lo[target], temp_lo[source]); temp_hits[target] += temp_hits[source]; temp_start[target] = MathMax(temp_start[target], temp_start[source]); temp_strength[target]=MathMax(temp_strength[target],temp_strength[source]); if(temp_hits[target]>3) temp_strength[target]=ZONE_PROVEN;
if(temp_hits[target]==0 && temp_turn[target]==false) { temp_hits[target]=1; if(temp_strength[target]<ZONE_VERIFIED) temp_strength[target]=ZONE_VERIFIED; }
if(temp_turn[target] == false || temp_turn[source] == false) temp_turn[target] = false; if(temp_turn[target] == true) temp_hits[target] = 0;
temp_hits[source]=-1; } } }
// copy the remaining list into our official zones arrays zone_count=0; for(i=0; i<temp_count; i++) { if(temp_hits[i]>=0 && zone_count<1000) { zone_hi[zone_count] = temp_hi[i]; zone_lo[zone_count] = temp_lo[i]; zone_hits[zone_count] = temp_hits[i]; zone_turn[zone_count] = temp_turn[i]; zone_start[zone_count] = temp_start[i]; zone_strength[zone_count] = temp_strength[i];
if(zone_hi[zone_count]<Close[4]) zone_type[zone_count]=ZONE_SUPPORT; else if(zone_lo[zone_count]>Close[4]) zone_type[zone_count]=ZONE_RESIST; else { for(j=5; j<1000; j++) { if(Close[j]<zone_lo[zone_count]) { zone_type[zone_count]=ZONE_RESIST; break; } else if(Close[j]>zone_hi[zone_count]) { zone_type[zone_count]=ZONE_SUPPORT; break; } }
if(j==1000) zone_type[zone_count]=ZONE_SUPPORT; }
zone_count++; } } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void DrawZones() { double lower_nerest_zone_P1=0; double lower_nerest_zone_P2=0; double higher_nerest_zone_P1=EMPTY_VALUE; double higher_nerest_zone_P2=EMPTY_VALUE;
if(SetGlobals==true) { GlobalVariableSet("SSSR_Count_"+Symbol()+Period(),zone_count); GlobalVariableSet("SSSR_Updated_"+Symbol()+Period(),TimeCurrent()); }
for(int i=0; i<zone_count; i++) { if(zone_strength[i]==ZONE_WEAK && zone_show_weak==false) continue;
if(zone_strength[i]==ZONE_UNTESTED && zone_show_untested==false) continue;
if(zone_strength[i]==ZONE_TURNCOAT && zone_show_turncoat==false) continue;
//name sup if(zone_type[i]==ZONE_SUPPORT) string s="SSSR#S"+i+" Strength="; else //name res s="SSSR#R"+i+" Strength=";
if(zone_strength[i]==ZONE_PROVEN) s=s+"Proven, Test Count="+zone_hits[i]; else if(zone_strength[i]==ZONE_VERIFIED) s=s+"Verified, Test Count="+zone_hits[i]; else if(zone_strength[i]==ZONE_UNTESTED) s=s+"Untested"; else if(zone_strength[i]==ZONE_TURNCOAT) s=s+"Turncoat"; else s=s+"Weak";
ObjectCreate(s,OBJ_RECTANGLE,0,0,0,0,0); ObjectSet(s,OBJPROP_TIME1,Time[zone_start[i]]); ObjectSet(s,OBJPROP_TIME2,Time[0]); ObjectSet(s,OBJPROP_PRICE1,zone_hi[i]); ObjectSet(s,OBJPROP_PRICE2,zone_lo[i]); ObjectSet(s,OBJPROP_BACK,zone_solid); ObjectSet(s,OBJPROP_WIDTH,zone_linewidth); ObjectSet(s,OBJPROP_STYLE,zone_style);
if(zone_type[i]==ZONE_SUPPORT) { // support zone if(zone_strength[i]==ZONE_TURNCOAT) ObjectSet(s,OBJPROP_COLOR,color_support_turncoat); else if(zone_strength[i]==ZONE_PROVEN) ObjectSet(s,OBJPROP_COLOR,color_support_proven); else if(zone_strength[i]==ZONE_VERIFIED) ObjectSet(s,OBJPROP_COLOR,color_support_verified); else if(zone_strength[i]==ZONE_UNTESTED) ObjectSet(s,OBJPROP_COLOR,color_support_untested); else ObjectSet(s,OBJPROP_COLOR,color_support_weak); } else { // resistance zone if(zone_strength[i]==ZONE_TURNCOAT) ObjectSet(s,OBJPROP_COLOR,color_resist_turncoat); else if(zone_strength[i]==ZONE_PROVEN) ObjectSet(s,OBJPROP_COLOR,color_resist_proven); else if(zone_strength[i]==ZONE_VERIFIED) ObjectSet(s,OBJPROP_COLOR,color_resist_verified); else if(zone_strength[i]==ZONE_UNTESTED) ObjectSet(s,OBJPROP_COLOR,color_resist_untested); else ObjectSet(s,OBJPROP_COLOR,color_resist_weak); }
if(SetGlobals==true) { GlobalVariableSet("SSSR_HI_"+Symbol()+Period()+i,zone_hi[i]); GlobalVariableSet("SSSR_LO_"+Symbol()+Period()+i,zone_lo[i]); GlobalVariableSet("SSSR_HITS_"+Symbol()+Period()+i,zone_hits[i]); GlobalVariableSet("SSSR_STRENGTH_"+Symbol()+Period()+i,zone_strength[i]); GlobalVariableSet("SSSR_AGE_"+Symbol()+Period()+i,zone_start[i]); }
//nearest zones if(zone_lo[i]>lower_nerest_zone_P2 && Bid>zone_lo[i]) {lower_nerest_zone_P1=zone_hi[i];lower_nerest_zone_P2=zone_lo[i];} if(zone_hi[i]<higher_nerest_zone_P1 && Bid<zone_hi[i]) {higher_nerest_zone_P1=zone_hi[i];higher_nerest_zone_P2=zone_lo[i];} }
ner_hi_zone_P1[0]=higher_nerest_zone_P1; ner_hi_zone_P2[0]=higher_nerest_zone_P2; ner_lo_zone_P1[0]=lower_nerest_zone_P1; ner_lo_zone_P2[0]=lower_nerest_zone_P2; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool Fractal(int M,int P,int shift) { if(Period()>P) P=Period();
P=P/Period()*2+MathCeil(P/Period()/2);
if(shift<P) return(false);
if(shift>Bars-P) return(false);
for(int i=1; i<=P; i++) { if(M==UP_POINT) { if(High[shift+i]>High[shift]) return(false); if(High[shift-i]>=High[shift]) return(false); } if(M==DN_POINT) { if(Low[shift+i]<Low[shift]) return(false); if(Low[shift-i]<=Low[shift]) return(false); } } return(true); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void FastFractals() { int shift; int limit=MathMin(Bars-1,BackLimit); int P=Period()*fractal_fast_factor;
FastUpPts[0] = 0.0; FastUpPts[1] = 0.0; FastDnPts[0] = 0.0; FastDnPts[1] = 0.0;
for(shift=limit; shift>1; shift--) { if(Fractal(UP_POINT,P,shift)==true) FastUpPts[shift]=High[shift]; else FastUpPts[shift]=0.0;
if(Fractal(DN_POINT,P,shift)==true) FastDnPts[shift]=Low[shift]; else FastDnPts[shift]=0.0; } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void SlowFractals() { int shift; int limit=MathMin(Bars-1,BackLimit); int P=Period()*fractal_slow_factor;
SlowUpPts[0] = 0.0; SlowUpPts[1] = 0.0; SlowDnPts[0] = 0.0; SlowDnPts[1] = 0.0;
for(shift=limit; shift>1; shift--) { if(Fractal(UP_POINT,P,shift)==true) SlowUpPts[shift]=High[shift]; else SlowUpPts[shift]=0.0;
if(Fractal(DN_POINT,P,shift)==true) SlowDnPts[shift]=Low[shift]; else SlowDnPts[shift]=0.0; } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool NewBar() { static datetime LastTime=0; if(iTime(Symbol(),Period(),0)+time_offset!=LastTime) { LastTime=iTime(Symbol(),Period(),0)+time_offset; return (true); } else return (false); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void DeleteZones() { int len=5; int i;
while(i<ObjectsTotal()) { string objName=ObjectName(i); if(StringSubstr(objName,0,len)!="SSSR#") { i++; continue; } ObjectDelete(objName); } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ string TimeFrameToString(int tf) //code by TRO { string tfs;
switch(tf) { case PERIOD_M1: tfs="M1"; break; case PERIOD_M5: tfs="M5"; break; case PERIOD_M15: tfs="M15"; break; case PERIOD_M30: tfs="M30"; break; case PERIOD_H1: tfs="H1"; break; case PERIOD_H4: tfs="H4"; break; case PERIOD_D1: tfs="D1"; break; case PERIOD_W1: tfs="W1"; break; case PERIOD_MN1: tfs="MN"; }
return(tfs); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ string StringRepeat(string str,int n=1) { string outstr=""; for(int i=0; i<n; i++) outstr=outstr+str; return(outstr); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ string StringRightPad(string str,int n=1,string str2=" ") { return(str + StringRepeat(str2,n-StringLen(str))); } //+------------------------------------------------------------------+
Отредактировано ViL (Thu Sep 08 2016 02:14 PM)
|
Наверх
|
|
|
|
#79518 - Wed Aug 31 2016 09:36 PM
Re: Заказ индикаторов в TSLab
[Re: Stan]
|
member
Registered: Sat Jul 24 2010
Записи: 162
|
Это тот самый индикатор.. Я как то слышал от гуру и профессионалов что только с помощью него можно зарабатывать стабильно и много.. в связке с тслаб творит чудеса. Вообщем...вам надо закончить вуз на программиста, потом пройти курсы от по апи, сесть и написать этот индикатор. Далее включаете тслаб он даже будет работать нормально к тому моменту. В монитор можно будет не смотреть, ввиду наличия полной стабильности, не надо писать в тех поддержку. Только не палите больше индикатор а то все увидят, сделают, начнут зарабатывать и рынок исчезнет
|
Наверх
|
|
|
|
#79529 - Fri Sep 02 2016 10:28 AM
Re: Заказ индикаторов в TSLab
[Re: Nigel22]
|
Pooh-Bah
Registered: Wed Oct 26 2011
Записи: 2108
Loc: botland
|
|
Наверх
|
|
|
|
#79531 - Fri Sep 02 2016 01:42 PM
Re: Заказ индикаторов в TSLab
[Re: vito333]
|
journeyman
Registered: Fri Sep 28 2012
Записи: 98
|
Как два пальца ... Идеология понятна. Грубо - уровни поддержки и сопротивления, которые бьются на разных фремах - эдесь, я так понимаю - фракталы. И какие-то фильтры. Подобное пытался написать когда-то. Основу сделал - но крыша сьехала-гора переменных и вариантов. Штучка полезная, но грааль сидит у дяди кукла рядом с мешком денег.
_________________________
Физик-лирик
|
Наверх
|
|
|
|
#79568 - Wed Sep 07 2016 12:57 PM
Re: Заказ индикаторов в TSLab
[Re: komissar]
|
stranger
Registered: Thu Aug 04 2016
Записи: 6
|
А что его палить? Он в открытом доступе в библиотеке МТ4 бесплатно доступен. Я спрашиваю кто то может такой кубик сделать? Я бы мог- не спрашивал бы.
|
Наверх
|
|
|
|
|
|