Stock Portfolio Organizer

The ultimate porfolio management solution.

Shares, Margin, CFD's, Futures and Forex
EOD and Realtime
Dividends and Trust Distributions
And Much More ....
For Portfolio Manager Click Here

WiseTrader Toolbox

#1 Selling Amibroker Plugin featuring:

Advanced Adaptive Indicators
Advanced Pattern Exploration
Neural Networks
And Much More ....
Find Out More Here

KNP analysis 1 for Amibroker (AFL)
kushal
over 13 years ago
Amibroker (AFL)

Rating:
3 / 5 (Votes 2)
Tags:
trading system, amibroker, exploration, pivots

Its a 1st time try to modify few of the indicators and tried hard to get the best buy and sell values.

Screenshots

Similar Indicators / Formulas

Khichadi_R50_R3212.afl
Submitted by kartmer555 over 14 years ago
PRA TTS v1.1
Submitted by jaipal7786 about 12 years ago
PRA TTS
Submitted by jaipal7786 about 12 years ago
HOLY GRAIL
Submitted by prasadbrao almost 13 years ago
Market Profile with Volume and Camarilla Pivots
Submitted by bower about 15 years ago
PIVOT POINT WITH VPA1 FOR AMIBROKER
Submitted by METHUN over 14 years ago

Indicator / Formula

Copy & Paste Friendly
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
/* KNP analysis */
   
_SECTION_BEGIN("Setup");
//required settings:
//      Tools --> Preferences | go to Intraday tab and select "START time of interval"
//      View --> Intraday --> "Show 24 Hours Trading"
//      View --> Intraday --> "Filter Weekends"
   
// Rounding the Study line values
StopLst = ParamList("Select Stop", ".25|.33|.50|.66|.75|1.0|1.5", 6);
TargetLst = ParamList("Adjust Target", "0.50|0.66|0.75|1.00|1.10|1.20|1.25|1.30|1.35", 0);
Instrument = ParamList("Instrument", "Stocks|Forex|Futures");
length  = ParamList("Digits to R of Decimal","0|2|4",1);        // Number or numbers to the right of the decimal
rounding  = ParamList("Rounding (for pts.)", "Truncate|NearestQuarter");    // don't round, round to nearest 1, round to nearest .25
ExpFilter = ParamList("Exploration", "ORB|STATS|OHLC", 1);
FltrHolidays = ParamToggle("Filter Holidays", "YES|NO", 0);
UseDaySave = ParamToggle("Daylight Savings", "YES|NO", 0);
UserSpringFoward = ParamDate("SpringForward", "3/8/2009");
UserFallBehind = ParamDate("FallBehind", "11/2/2008");
UserOpen = ParamTime("Market Open", "09:30");
UserClose = ParamTime("Market Close", "16:00");
_SECTION_END();
_SECTION_BEGIN("Plot lines");
//Set parameter default to YES for displaying the final
//results of the break out calculations.
PlotBreak =  ParamToggle("Plot Breakout", "YES|NO", 0);
//set parameter default to YES for displaying PP, S1 and R1
PPSR1 = ParamToggle("PP,S1/R1", "YES|NO", 0);
//set paramter default to NO for displaying S2 and R2
S2R2 = ParamToggle("S2,R2", "YES|NO", 1);
//set parameter default to NO for dsiplaying S3 and R3
S3R3 = ParamToggle("S3,R3", "YES|NO", 1);
//set paramter default to NO for diplaying S4 and R4
S4R4 = ParamToggle("S4,R4", "YES|NO", 1);
_SECTION_END();
   
_SECTION_BEGIN("Price");
Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() ); 
SetChartBkColor(ParamColor("Panel color ",colorLightBlue));
_SECTION_END();
   
_SECTION_BEGIN("Speed Lines");
P20 = 20;
Plot( EMA( C, P20 ), "Spd20" ,colorBlack, styleLine | styleThick ); 
   
P18 = 18;
Plot( EMA( C, P18 ), "Spd18" ,colorCustom9, styleLine | styleThick ); 
   
P50 = 50;
Plot( MA( C, P50 ), "Spd 50" , colorBlue,styleDashed | styleThick); 
   
P200 = 200;
Plot( MA( C, P200 ), "Spd 200" , colorRed, ParamStyle("Style") ); 
   
Prd3HLC = Param("HLC 3 Prds", 3, 3, 10, 1);
Plot(MA((H + L + C)/3, Prd3HLC), "HLC 3MA", colorBlue, styleLine | styleThick);
   
Prd5HLC = Param("HLC 5 Prds", 5, 3, 10, 1);
Plot(MA((H + L + C)/3, Prd5HLC), "HLC 5MA", colorCustom12, styleLine | styleThick);
_SECTION_END();
   
_SECTION_BEGIN("Open Range Break Out");
   
CurBarTime = TimeNum();
   
//Need to use VBscript here to take the user selected date
//and covert it to the DateNum() format for use by AFL
EnableScript("vbscript");
<%
dim VarPart
    varPartSpring = Split(AFL("UserSpringFoward"), "/", 3)
   
AFL("Spring") = varPartSpring(0) 
    VarPartFall = Split(AFL("UserFallBehind"), "/", 3)
AFL("Fall") = VarPartFall(0)
   
%>
//convert VBscript output to number format and assign to 
//AFL variables
SpringForward = StrToNum(Spring);
FallBehind = StrToNum(Fall);
   
//based on user selection in parameters dialog for daylight savings and
// market open and close times, adjust the Open/Close for the market accordingly
if(UseDaySave == 0)
{
//if user selects daylight savings then test to see if each bar is within the daylight
//savings time window. For each bar that lies within the window, shift the time one hour
//forward. 
TimeOpen = IIf(DateTimeConvert( 0, DateTime() ) >= FallBehind AND DateTimeConvert( 0, DateTime() ) <= SpringForward,
             UserOpen + 10000, UserOpen ) ;
CalcClose = IIf(DateTimeConvert( 0, DateTime() ) >= FallBehind AND DateTimeConvert( 0, DateTime() ) <= SpringForward, 
                UserClose + 10000, UserClose ) ;
}
if(UseDaySave == 1)
{
//if user selects no for daylight savings then use the values as the are
TimeOpen = UserOpen ;
CalcClose = UserClose;
}
  
//=IF(MID(A17,3,2)="00",6000-(B17*100)+(A17-10000),A17-(100*B17))
TimeClose = IIf(StrMid(NumToStr(CalcClose ,1,False),2,2)=="00",
            6000-((Interval()/60)*100)+(CalcClose-10000),
            CalcClose-(100*(Interval()/60)));
   
//Determine the value of the market open. Initial setting is for
 
MrktOpen = ValueWhen(CurBarTime  == TimeOpen , Open);
DlyOpen =ValueWhen(CurBarTime == TimeClose, MrktOpen);
//Determine the highest high for each day's trading.
//Adjust time as needed for your market.
DlyHigh = HighestSince(CurBarTime  == TimeOpen , High);
//Take a snapshot value of the day's high at the time of market   
//Adjust as needed for your market.
DlyHighest = ValueWhen(CurBarTime  == TimeClose , DlyHigh);
//Do the same for the lowest value of the trading day.
//Adjust time as needed for your market.
DlyLow = LowestSince(CurBarTime  == TimeOpen , Low);
DlyLowest = ValueWhen(CurBarTime  == TimeClose , DlyLow);
//determine the market closing price
DlyClose = ValueWhen(CurBarTime  == TimeClose , C);
//Now calculate the min range value using Open, Low and High
//variables calculated above
RngMin = Min(DlyHighest - MrktOpen, MrktOpen - DlyLowest);
//Compres this to a daily time frame in order to capture
//the final value of the Range Min for each trading day
DlyRngMin = TimeFrameCompress(RngMin, inDaily, compressLast);
//Use the compressed variable to calculate a 10 day average\
RngMinAvg = MA(DlyRngMin , 10);
   
//uncompress the daily variable so that it can be used in 
//calcuating the long and short break out levels for each day
RngMinAvg = TimeFrameExpand(RngMinAvg, inDaily);
   
//caclculate the max range value using the opn, low and high
//variables
RngMax = Max(DlyHighest - MrktOpen, MrktOpen - DlyLowest);
//compress this to a daily time frame in order to capture
//the final value of the range max for each trading day
DlyRngMax = TimeFrameCompress(RngMax, inDaily, compressLast);
//use the compressed variable to calculate a 10 day average
RngMaxAvg = MA(DlyRngMax, 10);
//uncompress the daily variable so that it can be used in
//calculating the profit target for opening range breakouts
RngMaxAvg = TimeFrameExpand(RngMaxAvg, inDaily);
//Use the values calculated above to determine the opening
//range break outs. Notice the Range Min has been shifted so
//that is reads the previous day's value and this is used against
//the current day's open to determine the break out levels
BreakOutLong = MrktOpen + Ref(RngMinAvg, -1);
BreakOutShort = MrktOpen - Ref(RngMinAvg, -1);
   
//round the breakout levels based on user selection in parameters
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if(Length == "0")
    {
        breakOutLong = int(breakOutLong );
        breakOutShort = int(breakOutShort );
    }
else if(Length == "2")
    {
    if(rounding == "NearestQuarter" AND Instrument == "Futures")
        {
        breakOutLong = 0.25 * ceil( 0.5 + BreakOutLong * 4 );
        breakOutShort = 0.25 * floor( 0.5 + BreakOutShort * 4 );
        }
    else
        {
        breakOutLong = 0.01 * round(0.5 + BreakOutLong * 100);
        breakOutShort = 0.01 * round(0.5 + BreakOutShort * 100);
        }
test = 0;
    }
else if(Length == "4")
{
        breakOutLong = Prec(breakOutLong , 4);
        breakOutShort = Prec(breakOutShort , 4);
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//now use the average max range to calculate a profit target
//for each day's opening range break out
UserTarget = StrToNum(TargetLst);
   
//allow user to modify the profit target from selection made in 
//the parameters.
ProfitLong = MrktOpen + (Ref(RngMaxAvg, -1))*UserTarget ;
ProfitShort = MrktOpen - (Ref(RngMaxAvg, -1))*UserTarget ;
   
UserStop = StrToNum(StopLst);
   
   
//Allow user to modify the stop loss values from selection made
//in the parameters.
StopAmtLong = Prec((breakOutLong - MrktOpen)*UserStop ,2);
StopAmtShort = Prec((MrktOpen - breakOutShort)*UserStop ,2);
   
//round the stop and profit target levels based on user selection in parameter
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
if(Length == "0")
    {
        StopAmtShort = int(StopAmtShort);
        StopAmtLong = int(StopAmtLong);
        ProfitShort = int(ProfitShort) ;
        ProfitLong = int(ProfitLong); 
    }
else if(Length == "2")
    {
    if(rounding == "NearestQuarter" AND Instrument == "Futures")
        {
        StopAmtShort = 0.25 * ceil( 0.5 + StopAmtShort * 4 )+0.25;
        StopAmtLong = 0.25 * floor( 0.5 + StopAmtLong * 4 );
        ProfitShort = 0.25 * ceil( 0.5 + ProfitShort * 4 ) ;
        ProfitLong = 0.25 * floor( 0.5 + ProfitLong * 4 ) - 0.25;
        }
    else
        {
        StopAmtShort = 0.01 * floor(0.5 + StopAmtShort * 100);
        StopAmtLong = 0.01 * round(0.5 + StopAmtLong * 100)+0.01;
        ProfitShort = Prec(ProfitShort , 2) ;
        ProfitLong = Prec(ProfitLong , 2);
        }
   
    }
else if(Length == "4")
{
        StopAmtShort = Prec(StopAmtShort , 4);
        StopAmtLong = Prec(StopAmtLong , 4);
        ProfitShort = Prec(ProfitShort , 4) ;
        ProfitLong = Prec(ProfitLong , 4); 
}
   
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
   
//create the title layout for the various levels
TitleBreakOuts = EncodeColor(colorCustom11) +"Today's Breakout Levels:" +"\n"
                    +"Long Target: " +ProfitLong + "\n"
                    +"Breakout Long: " +breakOutLong +"\n"
                    +"Long Stop: " +(BreakOutLong - StopAmtLong) +"\n"
                    +"Today's Open: " +MrktOpen +"\n"
                    +"Breakout Short: " +breakOutShort +"\n"
                    +"Short Target: " +ProfitShort +"\n"
                    +"Short Stop: " + (BreakOutShort + StopAmtShort)+"\n";
   
_SECTION_END();
   
_SECTION_BEGIN("Toby Crabel Patterns");
TitleHeader = EncodeColor(colorYellow) +"Yesterday's Price Patterns" +"\n";
TitleSwing = EncodeColor(colorLavender) +"1 Day Swing Trend" + "\n";
   
//compress daily high and low for use in calculations
DlyC = TimeFrameCompress(DlyClose , inDaily, compressLast);
DlyH = TimeFrameCompress(DlyHighest, inDaily, compressLast);
DlyL = TimeFrameCompress(DlyLowest, inDaily, compressLast);
DlyO = TimeFrameCompress(MrktOpen, inDaily, compressLast);
DlyRng = DlyH-DlyL;
//use compressed daily high and low to expand day's 2-5
PrevO = TimeFrameExpand(DlyO, inDaily);//day 2 open
//PrevO2 = TimeFrameExpand(Ref(DlyO, -1), inDaily);//day 3 open
CurH = TimeFrameExpand(DlyH, inDaily);//day 2 high
PrevH = TimeFrameExpand(Ref(DlyH,-1), inDaily);//day 3 high
PrevH2 = TimeFrameExpand(Ref(DlyH,-2), inDaily);//day 4 high
//PrevH3 = TimeFrameExpand(Ref(DlyH,-3), inDaily);//day 5 high
CurL = TimeFrameExpand(DlyL, inDaily);//day 2 low
PrevL = TimeFrameExpand(Ref(DlyL,-1), inDaily);//day 3 low
PrevL2 = TimeFrameExpand(Ref(DlyL,-2), inDaily);//day 4 low
//PrevL3 = TimeFrameExpand(Ref(DlyL,-3), inDaily);//day 5 low
PrevC = TimeFrameExpand(DlyC, inDaily);//day 2 close
PrevC2 = TimeFrameExpand(Ref(DlyC,-1), inDaily);//day 3 close
PrevC3 = TimeFrameExpand(Ref(DlyC,-2), inDaily);//day 4 close
   
//code and plot the Doji 
//abs(O-C)/(H-L) < .11 AND (O+C)/2 < H-((H-L)*.33) AND (O+C)/2 > L+((H-L)*.33)
DlyDoji = (abs(DlyO-DlyC)/(DlyRng)) < 0.11 AND 
            ((DlyO+DlyC)/2) < (DlyH-((DlyRng)*0.33)) AND
            ((DlyO+DlyC)/2) > (DlyL+((DlyRng)*0.33));
doji = TimeFrameExpand(DlyDoji, inDaily);
   
Cntr = 0;
Holiday = 0;
for(i=1;i<BarCount;i++)
    {
    if(CurBarTime[i] >= TimeOpen[i] AND CurBarTime[i] <= TimeClose[i])
        Cntr = 1;   
        if(Cntr[i] >= 1 AND CurBarTime[i] == TimeClose[i])
        {
            Cntr = 2;
        }
            if(Cntr[i] < 2 AND CurBarTime[i] > TimeClose[i])
            {
                Holiday[i] = 1;
            }
    }
   
Holiday = TimeFrameCompress(Holiday,inDaily);
   
//apply holiday filter if the user selects it in the parameters
if(FltrHolidays == 0)
{
   
//code and plot the NR4
DlyNR4 = IIf(Holiday OR (BarsSince(Holiday) >= 1 AND BarsSince(Holiday) <= 4),
            (LLV(DlyRng,5) == (DlyRng)),
            (LLV(DlyRng,4) == (DlyRng)));
//code and plot the WS4
DlyWS4 = IIf(Holiday OR (BarsSince(Holiday) >= 1 AND BarsSince(Holiday) <= 4),
            (HHV(DlyRng,5) == (DlyRng)),
            HHV(DlyRng,4) == (DlyRng));
//code and plot the NR7
DlyNR7 = IIf(Holiday OR (BarsSince(Holiday) >= 1 AND BarsSince(Holiday) <= 7),
            (LLV(DlyRng,8) == (DlyRng)),
            (LLV(DlyRng,7) == (DlyRng)));
//code and plot the WS7
DlyWS7 = IIf(Holiday OR (BarsSince(Holiday) >= 1 AND BarsSince(Holiday) <= 7),
            (HHV(DlyRng,8) == (DlyRng)),
            (HHV(DlyRng,7) == (DlyRng)));
//calculate the 2 day range
DlyTwoDayRng = IIf(Holiday OR (BarsSince(Holiday) == 1 ),
                    HHV(DlyH ,3) - LLV(DlyL ,3),
                    HHV(DlyH ,2) - LLV(DlyL ,2));
//calculate the 3 day range
DlyThreeDayRng = IIf(Holiday OR (BarsSince(Holiday) >= 1 AND BarsSince(Holiday) <= 2),
                    HHV(DlyH ,4) - LLV(DlyL ,4),
                    HHV(DlyH ,3) - LLV(DlyL ,3));
   
TitleDoji = WriteIf(Holiday OR (BarsSince(Holiday) >= 1 AND BarsSince(Holiday) <= 2),
                        EncodeColor(colorGold) +WriteIf(Ref(doji,-2), " Doji Day" +"\n", ""),
                        EncodeColor(colorGold) +WriteIf(Ref(doji,-1), " Doji Day" +"\n", ""));
}
   
   
//calculate the price patterns based on standard method if the user
//has selected NO in the filter holidays parameter.
if(FltrHolidays == 1)
{
//code and plot the NR4
DlyNR4 = (LLV(DlyRng,4) == (DlyRng));
//code and plot the WS4
DlyWS4 = (HHV(DlyRng,4) == (DlyRng));
//code and plot the NR7
DlyNR7 = (LLV(DlyRng,7) == (DlyRng));
//code and plot the WS7
DlyWS7 = (HHV(DlyRng,7) == (DlyRng));
//calculate the 2 day range
DlyTwoDayRng = HHV(DlyH ,2) - LLV(DlyL ,2);
//calculate the 3 day range
DlyThreeDayRng = HHV(DlyH ,3) - LLV(DlyL ,3);
   
TitleDoji = EncodeColor(colorGold) +WriteIf(Ref(doji,-1), " Doji Day" +"\n", "");
}
   
//code the NR
NR = (CurH - CurL) < (PrevH - PrevL);
   
NR4 = TimeFrameExpand(DlyNR4, inDaily);
TitleNR4 = EncodeColor(colorWhite) + WriteIf(Ref(NR4,0), " NR4 Day"+"\n", "");
   
WS4 = TimeFrameExpand(DlyWS4, inDaily);
TitleWS4 = EncodeColor(colorRed) +WriteIf(Ref(WS4,0), " WS4 Day"+"\n", "");
   
NR7 = TimeFrameExpand(DlyNR7, inDaily);
TitleNR7 = EncodeColor(colorWhite) + WriteIf(Ref(NR7,0), " NR7 Day"+"\n", "");
   
WS7 = TimeFrameExpand(DlyWS7, inDaily);
TitleWS7 = EncodeColor(colorRed) +WriteIf(Ref(WS7,0), " WS7 Day" +"\n", "");
   
TwoDayRng = TimeFrameExpand(DlyTwoDayRng, inDaily);
   
//determine lowest 2 day range in previous 20 days
DlyTwoBarNR = LLV(DlyTwoDayRng , 20) == DlyTwoDayRng ;
TwoBarNR = TimeFrameExpand(DlyTwoBarNR, inDaily);
TitleTwoBarNR = WriteIf(Ref(TwoBarNR, -1), " 2DayNR" +"\n", "");
   
ThreeDayRng = TimeFrameExpand(DlyThreeDayRng, inDaily);
   
//determine lowest 3 day range in previous 20 days
DlyThreeBarNR = LLV(DlyThreeDayRng , 20) == DlyThreeDayRng ;
ThreeBarNR = TimeFrameExpand(DlyThreeBarNR, inDaily);
TitleThreeBarNR = WriteIf(Ref(ThreeBarNR, -1), " 3DayNR" +"\n", "");
   
//code and plot the pivot top
PivotTop = CurL < PrevL  AND CurH < PrevH  AND PrevH > PrevH2;
   
//code and plot the pivot bottom
PivotBottom = CurH > PrevH   AND CurL > PrevL   AND PrevL < PrevL2;
   
SwingUP = PrevC > ValueWhen(PivotTop, PrevH,1);
SwingDWN = PrevC < ValueWhen(PivotBottom, PrevL,1);
   
TitleSwingTrend = WriteIf(SwingUP, " Swing UP" +"\n",
                        WriteIf(SwingDWN, " Swing DWN" +"\n", " Swing Flat" +"\n"));
ExpSwingTrend = IIf(SwingUP, 9,
                        IIf(SwingDWN, 0, 1));
   
//determine if previous day closed up or down
CloseUP = PrevO > PrevH;
//printf("Closed: " +WriteIf( Ref(DlyO,-1) < DlyC, "UP" +"\n", "DWN" +"\n"));
TitleUPDWN = WriteIf(PrevO > PrevH, " UP Day" +"\n", " DWN Day" +"\n");
GapDayUP = PrevO > PrevH2 ;
GapDayDWN = PrevO < PrevL2;
TitleGapDay = WriteIf(GapDayUP,
                WriteIf(CloseUP, " Gap UP and closed UP" +"\n", " Gap UP and closed DWN" +"\n"),
                WriteIf(GapDayDWN, 
                WriteIf(CloseUP, " Gap DWN and closed UP" +"\n", " Gap DWN and closed DWN" +"\n"),""));
_SECTION_END();
   
_SECTION_BEGIN("Exploration");
//the exploration is divided into two sections. each section is tied to the 
//the value of the parameter toggle which is used to select from two choices
   
//Choice 1 is ORB which is a simple scan showing the brekout, profit and stop 
//levels for each ticker. Run this scan within first minutes of market open to
//record the levels for each of the securities you are tracking. Set the range
//of the analsys window to 'n last days' where n=1.
   
//Choice 2 is STATS wich is a more thorough scan that is intended to be used on
//a single security at a time. Results can then be exported into a spread sheet for
//further analysis. While it is not perfect the intended goal is to output a set 
//of data which can be used to measure the profitabilty of the system on a given
//security as well as determine the best way to filter out undesirable trades. Set
//the range in the analysis window to include whatever range of days you want to 
//output.
   
/*
$$$$$$$$ The two lines below display the output of the STATS exploration $$$$$$$$$$
$$$$$$$$ The top line contains the column headings and the bottom line   $$$$$$$$$$
$$$$$$$$ contains the data for each time stamp. Trend is measured as a 1 $$$$$$$$$$
$$$$$$$$ day swing pivot. U means the previous day closed above a recent $$$$$$$$$$
$$$$$$$$ pivot top. D mena the previous day closed below a recent        $$$$$$$$$$
$$$$$$$$ pivot bottom. F means the previous day closed between a         $$$$$$$$$$
$$$$$$$$ both the recent pivot top and pivot bottom. D3 and D2 are  plus $$$$$$$$$$
$$$$$$$$ and minus symbols to show the close of each day relative to the $$$$$$$$$$
$$$$$$$$ previous. D1 is the current day's open relative to previous     $$$$$$$$$$
$$$$$$$$ day's close. D1 is trade day, D2 is the day before trade day    $$$$$$$$$$
$$$$$$$$ and D3 is the day before that. After this is a series of 5      $$$$$$$$$$
$$$$$$$$ price patterns taken from Toby Crabel's book. 1's and 0's show  $$$$$$$$$$
$$$$$$$$ for each time stamp what the PREVIOUS day's price pattern       $$$$$$$$$$
$$$$$$$$ looked like. After the price patterns you find the 6 dollar     $$$$$$$$$$
$$$$$$$$ values for the breakout, stop and profit targets. The final 6   $$$$$$$$$$
$$$$$$$$ columns show what occured during each step and using 1's and    $$$$$$$$$$
$$$$$$$$ 0's diplays when you enter long/short, stop out long/short or   $$$$$$$$$$
$$$$$$$$ hit the long/short target.                                      $$$$$$$$$$
   
Ticker              Date/Time           Trend   D3  D2  D1  WS4 WS7 Doji    NR4 NR7     BOL     LngTarg LngStp  BOS     ShrtTarg    ShrtStp LngEnt  StpOut  Targ    ShrtEnt StpOut  Targ
ESU9-GLOBEX-FUT 5/1/2009 9:37       U       +   -   +   1   1    0      0   0       873     886.75      871.5   867.25  853.25      868.5       0       0       0       1           0       0
   
So the line above tells us these things:
(Trend) Yesterday closed above a recent pivot top. (D1)Today's open was above yesterday's close, (D2) yesterday
closed below the previous day's close and (D3) that day closed above it's prior day. Yesterday was
also WS4 and WS7 day which means expansion. At 9:37 am pries broke below the short breakout level
and a short entry was indicated.
It is best to run the STATS exploration in a 1 minute time frame to prevent false stops occurring when
a single 5 or 15 minute bar stretches across both the stop loss and breakout levels
*/
   
intraHigh = HighestSince(CurBarTime  == TimeOpen, H);
intraLow = LowestSince(CurBarTime  == TimeOpen, L);
FirstBOL = Cross(H, breakOutLong) AND Ref(intraHigh,-1)  < breakOutLong OR
                H == breakOutLong AND Ref(intrahigh,-1) < breakOutlong OR
            Cross(H, breakOutLong) AND CurBarTime  == TimeOpen OR
                H == breakOutLong AND CurBarTime  == TimeOpen;
   
LongStop = L <= (breakOutLong - StopAmtLong) AND intraHigh >= breakOutLong AND intraHigh < ProfitLong;
FirstLongStop = LongStop AND Ref(LowestSince(Ref(FirstBOL,-1),L),-1) > (BreakOutLong - StopAmtLong) OR
                    LongStop AND Ref(FirstBOL,-1);
   
StgProfitLong = Cross(H, ProfitLong) AND Ref(intraHigh,-1) <= ProfitLong;
FirstProfitLong = IIf(HighestSince(CurBarTime  == TimeOpen, LongStop) < 1, StgProfitLong, 0);
   
FirstBOS = Cross(BreakOutShort, L) AND Ref(intraLow,-1) > breakOutShort OR
                L == breakOutShort AND Ref(intraLow,-1) > breakOutShort OR
            Cross(breakOutShort, L) AND CurBarTime  == TimeOpen OR
                L == breakOutShort AND CurBarTime  == TimeOpen;
   
ShortStop = H >= (BreakOutShort + StopAmtShort) AND intraLow <= breakoutShort AND intraLow > ProfitShort;
FirstShortStop  = ShortStop AND Ref(HighestSince(Ref(FirstBOS,-1),H),-1) < (BreakOutShort + StopAmtShort) OR
                        ShortStop AND Ref(FirstBOS,-1);
   
StgProfitShort = Cross(ProfitShort, L) AND Ref(intraLow,-1) >= ProfitShort;
FirstProfitShort = IIf(HighestSince(CurBarTime  == TimeOpen, ShortStop) < 1, StgProfitShort , 0);
MrktHours = CurBarTime  >= TimeOpen AND CurBarTime  <= TimeClose;
if(expFilter == "ORB")
{
Filter = TimeNum() == TimeOpen;
AddColumn(breakOutLong, "BOL", 1.2);
AddColumn(ProfitLong, "LngTarg", 1.2);
AddColumn(breakOutLong - StopAmtLong, "LngStp", 1.2);
AddColumn(breakOutShort, "BOS", 1.2);
AddColumn(ProfitShort, "ShrtTarg", 1.2);
AddColumn(breakOutShort + StopAmtShort, "ShrtStp", 1.2);
   
}
if(expFilter == "STATS")
{
   
Filter = MrktHours  AND
            ( FirstBOS  OR FirstShortStop OR FirstProfitShort OR FirstBOL OR FirstLongStop OR FirstProfitLong  );
AddColumn(IIf( ExpSwingTrend == 9, 85, 
            IIf( ExpSwingTrend == 0, 68, 70 )), "Trend", formatChar );
AddColumn(IIf(PrevC2 > PrevC3, 43, 45), "D3", formatChar);
AddColumn(IIf(PrevC > PrevC2, 43, 45), "D2", formatChar);
AddColumn(IIf(MrktOpen > PrevC, 43, 45), "D1", formatChar);
AddColumn(WS4, "WS4", 1);
AddColumn(WS7, "WS7", 1);
AddColumn(doji, "Doji", 1);
AddColumn(NR4, "NR4", 1);
AddColumn(NR7, "NR7", 1);
   
AddColumn(breakOutLong, "BOL", 1.2);
AddColumn(ProfitLong, "LngTarg", 1.2);
AddColumn(breakOutLong - StopAmtLong, "LngStp", 1.2);
AddColumn(breakOutShort, "BOS", 1.2);
AddColumn(ProfitShort, "ShrtTarg", 1.2);
AddColumn(breakOutShort + StopAmtShort, "ShrtStp", 1.2);
   
AddColumn(FirstBOL, "LngEnt", 1);
AddColumn(FirstLongStop, "StpOut", 1);
AddColumn(FirstProfitLong, "Targ", 1);
   
AddColumn(FirstBOS, "ShrtEnt", 1);
AddColumn(FirstShortStop, "StpOut", 1);
AddColumn(FirstProfitShort, "Targ", 1);
}
   
if(expFilter == "OHLC")
{
//When exploration filter is set to OHLC in parameters,
//this will output the O,H,L,C for each day/ticker selected in
//the analysis window.
Filter = CurBarTime == TimeClose ;
AddColumn(DlyOpen, "O", 1.2);
AddColumn(DlyHighest, "H", 1.2);
AddColumn(DlyLowest, "L", 1.2);
AddColumn(DlyClose, "C", 1.2);
   
}
_SECTION_END();
   
_SECTION_BEGIN("Daily Pivots");
//Determine the value of the market close. Initial setting is for
//4:00 PM to match US Market Open. Adjust as need for your market
MrktClose = ValueWhen(CurBarTime  == TimeClose , Close);
Range = DlyHighest - DlyLowest;
PP = (DlyHighest + DlyLowest + MrktClose)/3;
PP = round(PP * 4) / 4;
R1 = (2 * PP) - DlyLowest;
S1 = (2 * PP) - DlyHighest;
R2 = PP + Range;
S2 = PP - Range;
R3 = R2 + Range;
S3 = S2 - Range;
R4 = R3 + Range;
S4 = S3 - Range;
   
TitlePivots = EncodeColor(colorBlack) +"Today's Daily Pivots" +"\n"
                +"R1: " +R1 +"\n" +"PP: " +PP +"\n" +"S1: " +S1 +"\n";
if(PPSR1 == 0)
{
Plot(R1, "Dly R1", colorBlue, styleLine | styleThick | styleNoRescale);
Plot(PP, "Dly Pivot", colorCustom12, styleLine | styleThick | styleNoRescale);
Plot(S1, "Dly S1", colorBlue, styleLine | styleThick | styleNoRescale);
}
if(S2R2 == 0)
{
Plot(R2, "Dly R2", colorBlue, styleLine  | styleNoRescale);
Plot(S2, "Dly S2", colorBlue, styleLine  | styleNoRescale);
}
if(S3R3 == 0)
{
Plot(R3, "Dly R3", colorBlue, styleDashed | styleThick | styleNoRescale);
Plot(S3, "Dly S3", colorBlue, styleDashed | styleThick | styleNoRescale);
}
if(S4R4 == 0)
{
Plot(R4, "Dly R4", colorBlue, styleDashed  | styleNoRescale);
Plot(S4, "Dly S4", colorBlue, styleDashed  | styleNoRescale);
}
   
_SECTION_END();
if(PlotBreak == 0)
{
Plot(MrktOpen, "Daily Open", colorBlack, styleLine | styleNoRescale);
Plot(BreakOutLong , "Break Out Long", colorGreen, styleLine | styleNoRescale);
Plot(BreakOutShort , "Break Out Short", colorRed, styleLine | styleNoRescale);
Plot(ProfitLong, "Long Target", colorGold, styleDots | styleThick | styleNoRescale);
Plot(ProfitShort, "Short Target", colorGold, styleDots | styleThick | styleNoRescale);
PlotOHLC(MrktOpen, breakOutLong, MrktOpen, MrktOpen, "", colorPaleGreen, styleCloud | styleNoRescale | styleNoLabel);
PlotOHLC(MrktOpen, MrktOpen, BreakOutShort , MrktOpen, "", colorRose, styleCloud | styleNoRescale | styleNoLabel);
}
RibbonColor = IIf(MrktHours  , colorGreen, colorRed);
   
Plot( 2, "ribbon",RibbonColor,styleOwnScale|styleArea|styleNoLabel, -1, 100 );
   
_SECTION_BEGIN("Title");
SetChartOptions(0,chartShowArrows|chartShowDates);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) ", O, H, L, C
SelectedValue( ROC( C, 1 ) ) )+"\n" +TitleBreakOuts  +TitlePivots +TitleSwing +TitleSwingTrend +TitleHeader 
+TitleNR4  +TitleNR7 +TitleTwoBarNR +TitleThreeBarNR +TitleWS4 
+TitleWS7 +TitleDoji 
+EncodeColor(colorWhite) +WriteIf(TitleGapDay == "", TitleUPDWN, "") +TitleGapDay   );
_SECTION_END();
// *********************************************************
// *
// * Prediction with model AR by Least Square / Autocorrelation
// * - Native AFL and VBS (for Gaussian Elimination if selected)
// * - biased or not biased estimator depending volatility
// * - averaging by T3 zerolag
// * - detrend by derivation
// *
// * - tomy_frenchy, v0.1
// * - fred for VBS Gaussian Elimination. Thanks a lot.
// *
// *********************************************************
 
// *********************************************************
// *
// *     Price field = Data to predict
// *     Periods = Periods for T3 filtering
// *     Slope = Slope for T3 filtering (0.7 to 0.83 for usual value)
// *     Methode = 0: Durbin-Levinson, 1: Gaussian Elimination
// *     Order  = Order of AR model
// *     ExtraF = Number of Bars to Extrapolate Forward
// *
// *********************************************************
 
// *********************************************************
// *
// *     Plotting :
// *     The bar position on the graphics separe in/out samples
// *     Green: computed from current data (centered T3 moving average)
// *     Blue: predicted, in-sample (AR, for the bar delayed because of T3 MA)
// *     Red: predicted, out-sample (AR, pure prediction)
// *
// *********************************************************
 
 
// For a resolution with Gaussian Elimination (more stable than Levinson-Durbin but slower)
EnableScript("VBScript");
<%
function Gaussian_Elimination (OrderAR, Autocorr)
    Dim b(200, 200)
    Dim w(200)
    Dim Coeff(200)
 
    for i = 1 To 200
        Coeff(i) = 0
    next
 
    n = OrderAR
 
    for i = 1 to n
        for j = 1 to  n
                b(i, j) = cDbl(Autocorr(abs(j - i)))
        next     
        w(i) = cDbl(Autocorr(i))
    next
 
    n1 = n - 1
    for i = 1 to n1
        big = cDbl(abs(b(i, i)))
        q = i
        i1 = i + 1
 
        for j = i1 to n
            ab = cDbl(abs(b(j, i)))
            if (ab >= big) then
                big = ab
                q = j
            end if
        next
 
        if (big <> 0.0) then
            if (q <> i) then
                for j = 1 to n
                    Temp = cDbl(b(q, j))
                    b(q, j) = b(i, j)
                    b(i, j) = Temp
                next
                Temp = w(i)
                w(i) = w(q)
                w(q) = Temp
            end if
        end if
 
        for j = i1 to n
            t = cDbl(b(j, i) / b(i, i))
            for k = i1 to n
                b(j, k) = b(j, k) - t * b(i, k)
            next        
            w(j) = w(j) - t * w(i)
        next     
    next
 
    if (b(n, n) <> 0.0) then
 
        Coeff(n) = w(n) / b(n, n)
        i = n - 1
 
        while i > 0
            SumY = cDbl(0)
            i1 = i + 1
            for j = i1 to n
                SumY = SumY + b(i, j) * Coeff(j)
            next
            Coeff(i) = (w(i) - SumY) / b(i, i)
            i = i - 1
        wend  
 
        Gaussian_Elimination = Coeff
 
    end if
end function
%>
 
function T3(price,periods,s) {
    e1=EMA(price,periods);
    e2=EMA(e1,Periods);
    e3=EMA(e2,Periods);
    e4=EMA(e3,Periods);
    e5=EMA(e4,Periods);
    e6=EMA(e5,Periods);
    c1=-s*s*s;
    c2=3*s*s+3*s*s*s;
    c3=-6*s*s-3*s-3*s*s*s;
    c4=1+3*s+s*s*s+3*s*s;
    Ti3=c1*e6+c2*e5+c3*e4+c4*e3;
    return ti3;
}
 
function f_centeredT3(data) {
    global slide;
    periods = Param("Periods", 5, 1, 200, 1);
    slope = Param("Slope", 0.7, 0, 3, 0.01);
    slide = floor(periods/2);
    centeredT3 = data;
    centeredT3 = Ref(T3(data,periods,slope),slide);
    centeredT3 = IIf( IsNan(centeredT3) OR !IsFinite(centeredT3) OR IsNull(centeredT3), data, centeredT3);
    return centeredT3;
}
 
function f_detrend(data) {
    detrended[0]=0;
    for (i = 1; i < BarCount; i++) detrended[i] = data[i] - data[i-1];
    return detrended;
}
 
function f_retrend(data, first_value, first_index, last_index) {
    for (i = 0; i < first_index; i++) retrended[i] = -1e10;
    retrended[first_index]=first_value;
    for (i = first_index + 1; i < last_index + 1; i++) retrended[i] = data[i] + retrended[i-1];
    for (i = last_index + 1; i < BarCount; i++) retrended[i] = -1e10;
    return retrended;
}
 
function AR(Data, BegBar, EndBar, OrderAR, ExtraF, Methode) {
BI = BarIndex();
Data_all = Data;
Data = IIf(BI < BegBar, 0, IIf(BI > EndBar, 0, Data));
 
LongBar = EndBar - BegBar + 1;
 
 
// Calcul for autocorrelation function
temp = MA(Data,LongBar);
moy_data = temp[EndBar];
data_centred = Data - moy_data;
 
for (i = 0; i < OrderAR + 1; i++) {
    temp = 0;
    for (j = BegBar; j < EndBar + 1 - i; j++) {
        temp = temp + data_centred[j]*data_centred[j+i];
    }
    //Autocorr[i]=(1/(LongBar))*temp; //biased estimator, small variance
    Autocorr[i]=(1/(LongBar-i))*temp; //not biased estimator, strong variance
}
Autocorr=Autocorr/Autocorr[0];
 
 
Gaussian_Elimination = Methode; // 0: Durbin-Levison, 1: Gaussian Elimination
 
if ( Gaussian_Elimination == 1 ) {
// Calcul AR parameters with Gaussian Elimination (vbs, more stable and precise, but slower)
VBS    = GetScriptObject();
AR_Coeff  = VBS.Gaussian_Elimination(OrderAR, Autocorr);
}
 
else {
// Calcul AR parameters with Durbin-Levison algorythm for Toeplitz matrix
 
// initialisation :
AR_Coeff = 0;
alpha[1] = Autocorr[0];
beta[1] = Autocorr[1];
k[1] = Autocorr[1] / Autocorr[0];
AR_Coeff[1] = k[1];
 
// itertive calcul :
for (n = 1; n < OrderAR; n++) {
 
// Last coefficient calcul
    // Step 1 : invert Coeff array
    for (i = 1; i < n + 1; i++) AR_Coeff_inv[n+1-i] =  AR_Coeff[i];
 
    // Step 2
    temp = 0;
    for (i = 1; i < n + 1; i++) temp = temp + Autocorr[i] * AR_Coeff_inv[i];
    beta[n+1] = Autocorr[n+1] - temp;
 
    // Step 3
    alpha[n+1] = alpha[n] * (1 - k[n]*k[n]);
 
    // Step 4
    k[n+1] = beta[n+1] / alpha[n+1];
    AR_Coeff[n+1] = k[n+1];
 
// Other older coefficients calcul
    // Step 5
    for (i = 1; i < n + 1; i++) New_AR_Coeff[i] = AR_Coeff[i] - k[n+1] * AR_Coeff_inv[i];
 
    // Step 6
    New_AR_Coeff[n+1] =  AR_Coeff[n+1];
 
// Update
    AR_Coeff = New_AR_Coeff;
}
}
 
 
 
// Prediction to +1 :
//Data = Data * Data_max;
AR_data = 0;
for (i = 1; i < OrderAR + 1; i++) {
    AR_data = AR_data + AR_Coeff[i] * Ref(Data,-i);
    printf("Coeff AR " + NumToStr(i, 1.0) + " = " + NumToStr(AR_Coeff[i], 1.9) + "\n");
}
AR_data = IIf(BI < BegBar, -1e10, IIf(BI > EndBar, -1e10, AR_data));
 
 
// Prédiction to +Forward
AR_data_pred = IIf(BI > EndBar, -1e10, Data); // to be sure not to compute future value
for (i = EndBar + 1; i < EndBar + 1 + ExtraF; i++) {
    temp = 0;
    for (j = 1; j < OrderAR + 1; j++) {
        temp = temp + AR_Coeff[j] * AR_data_pred[i-j];
    }
    AR_data_pred[i] = temp;
}
for (i = EndBar + 1; i < EndBar + 1 + ExtraF; i++) {
    AR_data[i] = AR_data_pred[i];
}
 
 
// End
return AR_data;
}
 
 
// *********************************************************
// *
// * Demo AFL to use AR Prediction
// *
// *********************************************************
 
SetBarsRequired(20000,20000);
 
BI = BarIndex();
current_pos = SelectedValue( BI ) - BI[ 0 ];
printf( "Position: " + WriteVal(current_pos) + "\n" );
 
 
// Denoising and detrending for stationnarity
data_source = ParamField("Price field",-1);
centeredT3 = f_centeredT3(data_source);
data = f_detrend(centeredT3);
 
 
// Choice of parameters
Methode = Param("Methode 0:DL, 1:GE",  0, 0, 1, 1);
longueur = Param("Longueur",  200, 1, 5000, 1);
OrderAR  = Param("nth Order AR", 2, 1, 50, 1);
ExtraF = Param("Extrapolate Forwards",  0, 0, 50, 1);
 
 
BegBar = current_pos - longueur - slide;
EndBar = current_pos - slide;
 
 
// Prediction calcul
AR_pred = AR(data, BegBar, EndBar, OrderAR, ExtraF, Methode);
AR_pred = f_retrend(AR_pred, centeredT3[EndBar], EndBar, EndBar + slide + ExtraF);
 
 
// Reconstruct data + prediction
Data_reconstruct = -1e10;
Data_reconstruct = IIf( BI <= EndBar AND BI >= BegBar, centeredT3, AR_pred);
 
 
// Plot result
Plot(Data_reconstruct, "AR Prediction - " + NumToStr(OrderAR, 1.0), IIf(BI > EndBar + slide, colorRed, IIf(BI > EndBar AND BI <= EndBar + slide, colorBlue, colorBrightGreen)), styleThick, Null, Null, 0);
 
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    THIS SECTION DRAWS TD TREND LINES */
 
percent  = 0.01 * 1; /* Adjust this percent as necessary, I use .01 because FOREX is a 0.0000 number */
firstpointL = 2;
firstpointH = 2;
 
y0=LastValue(Trough(L,percent,firstpointL));
y1=LastValue(Trough(Ref(L,-1),percent,1));
 
for( i = 1; i < BarCount AND y0 >= y1; i++ )
{
         
        firstpointL++; 
        y0=LastValue(Trough(L,percent,firstpointL));        
}
 
x0=BarCount - 1 - LastValue(TroughBars(L,percent,firstpointL));
x1=BarCount - 1 - LastValue(TroughBars(Ref(L,-1),percent,1));
LineL = LineArray( x0, y0, x1, y1, 1 );
/*
Plot(C, "C", colorBlack, styleCandle);
*/
Plot( LineL, " Support Trend line", colorWhite,4 +8 );
 
 
yt0=LastValue(Peak(H,percent,firstpointH));
yt1=LastValue(Peak(Ref(H,-1),percent,1));
 
for(i = 1; i < BarCount AND yt0 <= yt1; i++ )
{
         
        firstpointH++;     
        yt0=LastValue(Peak(H,percent,firstpointH));
}
xt0=BarCount - 1 - LastValue(PeakBars(H,percent,firstpointH));
xt1=BarCount - 1 - LastValue(PeakBars(Ref(H,-1),percent,1));
LineH = LineArray( xt0, yt0, xt1, yt1, 1 );
 
Plot( LineH, "Resistance Trend line", colorBrown,4 + 8 );
 
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
 
_SECTION_BEGIN("Time Left");
function GetSecondNum()
{
Time = Now( 4 );
Seconds = int( Time % 100 );
Minutes = int( Time / 100 % 100 );
Hours = int( Time / 10000 % 100 );
SecondNum = int( Hours * 60 * 60 + Minutes * 60 + Seconds );
return SecondNum;
}
RequestTimedRefresh( 1 );
TimeFrame = Interval();
SecNumber = GetSecondNum();
Newperiod = SecNumber % TimeFrame == 0;
SecsLeft = SecNumber - int( SecNumber / TimeFrame ) * TimeFrame;
SecsToGo = TimeFrame - SecsLeft;
   
x=Param("xposn",300,0,1000,1);
y=Param("yposn",50,0,1000,1);
   
GfxSelectSolidBrush( ColorRGB( 230, 230, 230 ) );
GfxSelectPen( ColorRGB( 230, 230, 230 ), 2 );
if ( NewPeriod )
{
GfxSelectSolidBrush( colorYellow );
GfxSelectPen( colorYellow, 2 );
Say( "New period" );
}
GfxRoundRect( x+45, y+17, x-3, y-2, 0, 0 );
GfxSetBkMode(1);
GfxSelectFont( "Arial", 12, 700, False );
GfxSetTextColor( colorBlack );
GfxTextOut( ""+SecsToGo+" / "+NumToStr( TimeFrame, 1.0 ), x, y );
_SECTION_END();
 
_SECTION_BEGIN("Price");
SetChartOptions(0,chartShowArrows|chartShowDates);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() ); 
_SECTION_END();
   
_SECTION_BEGIN("Time and Money");
// plot candlestick price chart
Plot( Close, "Price", colorBlack, styleCandle );
GraphXSpace = 1;
// define TAM chart period
period = 25;
// users of AB version 4.30 can use Param
// period = Param( "TAM period", 25, 2, 100, 1 );
halfperiod = floor( period /2 );
// minor term average
Arm = MA( Close, period );
Plot( Arm, "Minor term avg", colorRed );
// calculate volatility
yom = 100 * ( C - Ref( Arm, halfperiod ))/Ref( Arm, halfperiod );
avyom = MA( yom, 2 * period );
varyom = MA( yom * yom, 2 * period ) - avyom * avyom;
som = Ref( sqrt( varyom ), -halfperiod );
sigom = MA( som, period );
// plot reference price grid
Plot( Arm * ( 1 + 0.01 * sigom ), "Ch+1", colorLightGrey );
Plot( Arm * ( 1 - 0.01 * sigom ), "Ch-1", colorLightGrey );
Plot( Arm * ( 1 + 0.02 * sigom ), "Ch+2", colorLightGrey );
Plot( Arm * ( 1 - 0.02 * sigom ), "Ch-2", colorLightGrey );
Plot( Arm * ( 1 + 0.03 * sigom ), "Ch+3", colorLightGrey );
Plot( Arm * ( 1 - 0.03 * sigom ), "Ch-3", colorLightGrey );
_SECTION_END();
 
SetChartOptions(0,chartShowArrows|chartShowDates);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() ); 
   
//TIME FRAME CALCULATION
H1 = TimeFrameGetPrice("H", inDaily, -1);       // yesterdays high
L1 = TimeFrameGetPrice("L", inDaily, -1);       //              low
C1= TimeFrameGetPrice("C", inDaily, -1);        //              close
DayO = TimeFrameGetPrice("O", inDaily);         // current day open
   
   
// PIVOT Calculation
P = ( H1+ L1 + C1 )/3;
S1 = (2*P)-H1;
R1 = (2*P)-L1;
S2 = P -(H1 - L1);
S3 = S1 - (H1-L1); 
R2 = P +(H1 - L1);
R3 = R1 +(H1-L1);
   
// PIVOT mid points
MIDR1 = (P+R1)/2;
MIDR2 = (R1+R2)/2;
MIDR3 = (R2+R3)/2;
MIDS1 = (P+S1)/2;
MIDS2 = (S1+S2)/2;
MIDS3 = (S2+S3)/2;
   
//PLOTS
Plot(R1, "",colorRed,styleLine+styleNoRescale);
Plot(R2, "",colorRed,styleLine+styleNoRescale);
Plot(R3, "",colorRed,styleLine+styleNoRescale);
   
Plot(P, "",colorGold,styleDots+styleNoRescale);
   
Plot(S1, "",colorDarkBlue,styleLine+styleNoRescale);
Plot(S2, "",colorDarkBlue,styleLine+styleNoRescale);
Plot(S3, "",colorDarkBlue,styleLine+styleNoRescale);
   
Plot(MIDR1, "",colorRed,styleDashed+styleNoRescale);
Plot(MIDR2, "",colorRed,styleDashed+styleNoRescale);
Plot(MIDR3, "",colorRed,styleDashed+styleNoRescale);
   
Plot(MIDS1, "",colorBlue,styleDashed+styleNoRescale);
Plot(MIDS2, "",colorBlue,styleDashed+styleNoRescale);
Plot(MIDS3, "",colorBlue,styleDashed+styleNoRescale);
   
Plot(H1, "",colorRed,styleDots+styleNoRescale);
Plot(L1, "",colorBlue,styleDots);
Plot(C1, "",colorBlack,styleDots+styleNoRescale);
   
// text section
   
"HIGH /LOW /CLOSE = " +H +" / "+ L+" / "+ C +"\n";
"H1 /L1 /C1 = " +H1 +" / "+ L1+" / "+ C1 +"\n";
   
"R3 = " +R3;
"midr3 = " +MIDR3;
"R2 = " +R2;
"midr2 = " +MIDR2;
"R1 = " +R1;
"midr1 = " +MIDR1;
"*************";
"p = " +p;
"*************";
"mids1 = " +MIDS1;
"S1 = " +S1;
"mids2 = " +MIDS2;
"S2 = " +S2;
"mids3 = " +MIDS3;
"S3 = " +S3;
   
_SECTION_END();
 
/*****************************************************************************
Name        :   Three Day Balance Points
Coded   By  :   Lal
Note        :   This is a simple idea - using the range of 
the last three days, find the mid-point.  Price above
this mid-point is bullish and price below, bearish.
   
You can optionally mark bars to show whether they
are above or below the balance point.  Also included is
an explorer to highlight stocks with a new close 
above/below the balance point.
 *****************************************************************************/
   
   
   
Bal_Days = Param("Days for Balance Point", 3, 2, 10, 1);
Mark_Bars = ParamToggle("Mark Bars?", "No|Yes", 0);
Plottype = ParamList("Price Plotstyle ", "Stylebar|StyleCandle");
   
SetChartBkGradientFill(ParamColor("Top", colorTeal), ParamColor("Bottom", colorLightGrey), ParamColor("Title", colorTeal));
SetChartBkColor(ParamColor("Chart Background", colorWhite));
   
// Find the High and Low of said period
Period_High = HHV(H, Bal_Days);
Period_Low = LLV(L, Bal_Days);
   
Balance_Point = Period_High - (Period_High - Period_Low) / Bal_Days;
Current_BP = Ref(Balance_Point,  - 1); // For the current day, we need the BP as worked out at Close yesterday !
   
Price_Style = IIf(Plottype == "Stylebar", styleBar, styleCandle);
Plot(C, "Close", ParamColor("Bar Color", colorBlack), Price_Style | styleThick);
Plot(Current_BP, "Current BP", ParamColor("BP Color", colorRed), styleStaircase);
Plot(Balance_Point, "Next Day's BP", colorBrown, styleNoDraw);
   
// Optional Visual Marking of bars above/below the Balance Point
if (Mark_Bars)
{
  PlotShapes(shapeSmallCircle *(C < Current_BP), colorRed, 0, H, 12);
  PlotShapes(shapeSmallCircle *(C > Current_BP), colorBlue, 0, L,  - 12);
}
   
//Explorer section
Close_Up = C > Current_BP;
New_Close_UP = Close_Up AND NOT Ref(Close_Up,  - 1);
   
Close_Dn = C < Current_BP;
New_Close_DN = Close_Dn AND NOT Ref(Close_DN,  - 1);
   
AddColumn(New_Close_Up, "New_Close_Up", 1, colorWhite, IIf(New_Close_Up, colorGreen, colorWhite));
AddColumn(New_Close_Dn, "New_Close_Dn", 1, colorWhite, IIf(New_Close_Dn, colorRed, colorWhite));
Filter = New_Close_Up OR New_Close_Dn;
 
// techtrader v2 amibroker version
// here we define buy conditions and name each one as a variable
PositionSize = -10; // always invest only 10% of the current Equity
cond1=Cross(H,Ref(HHV(H,10),-1)); // when todays high crosses last highest high over the last 10 periods
cond2=H > EMA(C,24); // todays high is greater than the 40 day Exp MA of closes
cond3=HHVBars(H,52) == 0; // todays high is the highest for 70 periods
cond4=EMA(V*C,18) > 100000; // ensure at least $100k of money flow
  
   
// the following line is the trigger if all conditions satisfied
Buy=cond1 AND cond2 AND cond3 AND cond4 ;
   
// here we define variables used once in the trade
ApplyStop( stopTypeLoss, stopModePercent, amount=10 );
Sell= Cross(Ref(EMA(L,90),-1),C); // close crosses below yesterdays average of the low
// here we define what gets displayed on the chart
shape = Buy * shapeUpArrow + Sell * shapeDownArrow;
PlotShapes( shape, IIf( Buy , colorYellow, colorRed ), 0, IIf( Buy , Low, High));
   
Filter = Buy; // lists exploration results conforming to our buy criteria
AddColumn(Buy, "buy", 1.0); //
Filter = Sell; // lists exploration results conforming to our buy criteria
AddColumn(Sell, "sell", 1.0); //
   
// This section creates the data that you can plot to see how often TT2 trades
// NOTE:- Using VOLUME array so get correct number when switching to WEEKLY or MONTHLY display
AddToComposite(Buy,"~TTBuys","V");
AddToComposite(Sell,"~TTSells","V");
   
Buy = ExRem(Buy,Sell) ;
Sell = ExRem(Sell, Buy);
Binary = Flip(Buy , Sell);
 
Title= " Td seq I";
/*TD seq long et short side full version*/
 
/********Optimize***********/
Opt1=Param("Opt1",5,5,21,1);
Opt2=Param("Opt2",12,1,21,1);
 
/*********Setup Buy*********/
TD1=IIf(Close<Ref(Close,-4),1,0);
TD2=IIf(BarsSince(BarsSince(TD1))==Opt1, 1,0); //Sum(TD1,9)==9;
TD3= Ref(H,-1)>=Ref(LLV(L,Opt1-4),-3);
TD4= Ref(C,-Opt1)>=Ref(C,-Opt2);
SetupBuy= TD3 AND TD2 AND TD4;
 
/***********SetupSell************/
TD1=IIf(Close>Ref(Close,-4),1,0);
TD2=IIf(BarsSince(BarsSince(TD1))==Opt1, 1,0);
TD3= Ref(L,-1)<=Ref(HHV(H,Opt1-4),-3);
TD4= Ref(C,-Opt1)<=Ref(C,-Opt2);
SetupSell= TD3 AND TD2 AND TD4 ;
 
/*********Count Buy ********/
CountBuy= Sum(IIf(C<Ref(C,-2),1,0),BarsSince(SetupBuy));
//or C<Ref(H,-2)
 
/*********Count Sell ********/
CountSell= Sum(IIf(C>Ref(C,-2),1,0),BarsSince(SetupSell));
//or C>Ref(L,-2)
 
/***********A***********/
B1= CountBuy >=Opt2;
B1= Hold(B1==0,2) AND B1;
Timing=(BarsSince(SetUpbuy)< BarsSince(SetUpsell));
Ccount=IIf(CountBuy >=Opt2,ValueWhen(B1,HHV(C,BarsSince(SetupBuy))),Null);
Hsetup=IIf(CountBuy >=Opt2,ValueWhen(SetupBuy,HHV(H,Opt1)),Null);
BuyA=B1 AND Timing AND Hsetup > Ccount;
 
/******B**********/
B2= CountBuy >Opt2 AND Close > Ref(Close,-4);
B2=Hold(B2==0,2) AND B2;
B2=ExRem(B2,B1);
BuyB=B2  AND Timing  AND Hsetup > Ccount;
 
/*************C***********/
B3= CountBuy >Opt2 AND Close > Ref(High,-2);
B3= Hold(B3==0,2) AND B3;
B3=ExRem(B3,B1);
BuyC= B3  AND Timing  AND Hsetup > Ccount;
 
/************Buy Signal********/
Buy=BuyB OR BuyC  ;
 
////////////////////////////////
//SHORT
/////////////////////////////////
 
/***********A***********/
S1= CountSell >=Opt2;
S1= Hold(S1==0,2) AND S1;
Timing=(BarsSince(SetUpSell)< BarsSince(SetUpbuy));
Ccount=IIf(CountSell >=Opt2,ValueWhen(S1,LLV(C,BarsSince(SetupSell))),Null);
Lsetup=IIf(CountSell >=Opt2,ValueWhen(SetupSell,LLV(L,Opt1)),Null);
SellA=S1 AND Timing AND Lsetup < Ccount;
 
/******B**********/
S2= CountSell >Opt2 AND Close < Ref(Close,-4);
S2=Hold(S2==0,2) AND S2;
S2=ExRem(S2,S1);
SellB=S2  AND Timing  AND Lsetup < Ccount;
 
/*************C***********/
S3= CountSell >Opt2 AND Close < Ref(Low,-2);
S3= Hold(S3==0,2) AND S3;
S3=ExRem(S3,S1);
SellC= S3  AND Timing  AND Lsetup < Ccount;
 
/***********Short Signal********/
Short= SellB OR SellC  ;
 
Plot(C,"",IIf(Short,colorYellow,IIf(Buy,colorGreen,1)),64);
 
PlotShapes(IIf(Short,
shapeDownArrow,shapeNone),colorYellow,0,H,-10);
PlotShapes(IIf(Buy,
shapeUpArrow,shapeNone),colorGreen,0,L,-10);
 
PlotShapes(IIf(SetupSell,
shapeDigit9,shapeNone),colorRed,0,H,20); 
PlotShapes(IIf(SetupBuy,
shapeDigit9,shapeNone),colorBlue,0,L,-20);
 
/* T3 trading system */
a = 0.7;
n = 2;
 
alpha = 2/(n + 1);
e1 =  EMA(Close, n);
e2 = EMA (e1, n);
e3 = EMA (e2, n);
e4 = EMA (e3,  n);
e5 = EMA (e4, n);
e6 = EMA (e5, n);
 
x = -a^3 * e6 + (3 * a^2 +3 * a^3) * e5 + (-6 * a^2 - 3 *
 a - 3 * a^3) * e4 + (1 + 3 * a + a^3 + 3 * a^2) * e3;
 
Graph0 = Close;
Graph1 = x;
 
Sell = Cross ( Close, x );
Buy = Cross (x, Close );
Short = Cross ( Close, x);
Cover = Cross (x, Close );
 
///// Chaloke.com Peak-Trough System 1.0 /////
 
Sens=Param("Sens",1,0.25,5,0.25);
PK=Peak(Close,Sens,1);
TGH=Trough(Close,Sens,1);
Color=IIf(BarsSince(Cross(C,Ref(PK,-1)))<BarsSince(Cross(Ref(TGH,-1),C)),colorBrightGreen,colorRed);
Plot(Zig(C,Sens),"",colorWhite);
Plot(C,"Chaloke.com Peak-Trough System",Color,styleCandle);
PlotShapes( Cross(C,Ref(PK,-1)) *shapeUpArrow,colorYellow,0,L,Offset=-20);
PlotShapes( Cross(Ref(TGH,-1),C) *shapeDownArrow,11,0,H,Offset=-20);
 
 Title=EncodeColor(colorBrightGreen)+Date()+"    " +Name() +"  Chaloke.com Peak-Trough System 1.0 " + EncodeColor(10)+"   O="+O+"   H="+H+"   L="+L+EncodeColor(colorPink)+"   C="+C+"  ("+NumToStr((C-Ref(C,-1))/Ref(C,-1)*100,1.2)+" %)    "
;
 
//====================================================================================
_SECTION_BEGIN("Volume Price Analysis - V.1.0");
SetChartOptions(0,chartShowArrows|chartShowDates);
//=======================================================================================
DTL=Param("Linear regression period",60,10,100,10); 
wbf=Param("WRB factor",1.5,1.3,2.5,.1);
nbf=Param("NRB factor",0.7,0.3,0.9,0.1);
TL=LinRegSlope(MA(C, DTL),2); 
 Vlp=Param("Volume lookback period",30,20,300,10);
Vrg=MA(V,Vlp);
St = StDev(Vrg,Vlp); 
Vp3 = Vrg + 3*st; 
Vp2 = Vrg + 2*st;;
Vp1 = Vrg + 1*st;;
Vn1 = Vrg -1*st; 
Vn2 = Vrg -2*st; 
rg=(H-L);
arg=Wilders(rg,30);
wrb=rg>(wbf*arg);
nrb=rg<(nbf*arg); 
Vl=V<Ref(V,-1) AND V<Ref(V,-2);
upbar=C>Ref(C,-1);
dnbar=C<Ref(C,-1); 
Vh=V>Ref(V,-1) AND Ref(V,-1)>Ref(V,-2);
Cloc=C-L;
x=rg/Cloc;
x1=IIf(Cloc=0,arg,x);
Vb=V>Vrg OR V>Ref(V,-1);
ucls=x1<2;
dcls=x1>2;
mcls=x1<2.2 AND x1>1.8 ;
Vlcls=x1>4;
Vhcls=x1<1.35;
j=MA(C,5);
TLL=LinRegSlope(j,40) ;
Tlm=LinRegSlope(j,15) ;
tls=LinRegSlope(j,5);
mp=(H+L)/2;
_SECTION_END();
//==========================================================================================
_SECTION_BEGIN("VSA");
utbar=wrb AND dcls AND tls>0 ;
utcond1=Ref(utbar,-1) AND dnbar ;
utcond2=Ref(utbar,-1) AND dnbar AND V>Ref(V,-1);
utcond3=utbar AND V> 2*Vrg;
trbar=Ref(V,-1)>Vrg  AND Ref(upbar,-1) AND Ref(wrb,-1) AND dnbar AND dcls AND wrb AND tll>0 AND H==HHV(H,10);
Hutbar=Ref(upbar,-1) AND Ref(V,-1)>1.5*Vrg AND dnbar AND dcls AND NOT wrb AND NOT utbar;
Hutcond=Ref(Hutbar,-1) AND dnbar AND dcls AND NOT utbar;
tcbar=Ref(upbar,-1) AND H==HHV(H,5)AND dnbar AND (dcls OR mcls) AND V>vrg AND NOT wrb AND NOT Hutbar ;
Scond1=(utcond1 OR utcond2 OR utcond3) ;
Scond2=Ref(scond1,-1)==0;
scond=scond1 AND scond2;
stdn0= tll<0 AND V>Ref(V,-1) AND Ref(dnbar,-1) AND upbar AND (ucls OR mcls) AND tls<0 AND tlm<0;
stdn= V>Ref(V,-1) AND Ref(dnbar,-1) AND upbar AND (ucls OR mcls) AND tls<0 AND tlm<0;
stdn1= tll<0 AND V>(vrg*1.5) AND Ref(dnbar,-1) AND upbar AND (ucls OR mcls)AND tls<0 AND tlm<0;
stdn2=tls<0 AND Ref(V,-1)<Vrg  AND upbar AND vhcls AND V>Vrg;
bycond1= stdn OR stdn1;
bycond= upbar  AND Ref(bycond1,-1);
stvol= L==LLV(L,5)  AND (ucls OR mcls) AND V>1.5*Vrg AND tll<0;
ndbar=upbar AND nrb AND Vl  AND dcls ;
nsbar=dnbar AND nrb AND Vl  AND dcls ;
nbbar= C>Ref(C,-1) AND Vl AND nrb AND x1<2;
nbbar= IIf(C>Ref(C,-1) AND V<Ref(V,-1) AND V<Ref(V,-2) AND x1<1.1,1,0);
lvtbar= vl AND L<Ref(L,-1) AND ucls;
lvtbar1= V<Vrg AND L<Ref(L,-1) AND ucls AND tll>0 AND tlm>0 AND wrb;
lvtbar2= Ref(Lvtbar,-1) AND upbar AND ucls;
dbar= V>2*Vrg AND dcls AND upbar AND tls>0 AND tlm>0 AND NOT Scond1 AND NOT utbar;
eftup=H>Ref(H,-1) AND L>Ref(L,-1) AND C>Ref(C,-1) AND C>=((H-L)*0.7+L) AND rg>arg AND V>Ref(V,-1);
eftupfl=Ref(eftup,-1) AND (utbar OR utcond1 OR utcond2 OR utcond3);
eftdn=H<Ref(H,-1) AND L<Ref(L,-1) AND C<Ref(C,-1) AND  C<=((H-L)*0.25+L) AND rg>arg AND V>Ref(V,-1);
_SECTION_END();
//=======================================================================================================================
_SECTION_BEGIN("Chart");
Vcolor=IIf(tls>0 AND tlm>0 AND tll>0,colorLime,IIf(tls>0 AND tlm>0 AND tll<0,colorGreen,
IIf(tls>0 AND tlm<0 AND tll<0,colorPaleGreen,IIf(tls<0 AND tlm<0 AND tll<0,colorRed,IIf(tls<0 AND tlm>0 AND tll>0,colorPaleGreen,
IIf(tls<0 AND tlm<0 AND tll>0,colorOrange,colorBlue))))));
GraphXSpace = 5;
PlotOHLC( OpenHighLowClose, "", vcolor, styleBar | styleThick  );
_SECTION_END();
//============================================================================================================================
// commentary
   
_SECTION_BEGIN("Commentary");
Vpc= utbar OR utcond1 OR utcond2 OR utcond3 OR stdn0 OR stdn1 OR stdn2 OR stdn OR lvtbar1 OR Lvtbar OR Lvtbar2 OR Hutbar OR Hutcond OR ndbar OR stvol OR tcbar;
   
if( Status("action") == actionCommentary ) 
(
printf ( "=========================" +"\n"));
printf ( "VOLUME PRICE ANALYSIS" +"\n");
printf ( "www.vpanalysis.blogspot.com" +"\n");
printf ( "=========================" +"\n");
printf ( Name() + " - " +Interval(2) +  "  - " + Date() +" - " +"\n"+"High-"+H+"\n"+"Low-"+L+"\n"+"Open-"+O+"\n"+
"Close-"+C+"\n"+ "Volume= "+ WriteVal(V)+"\n");
WriteIf(Vpc,"=======================","");
WriteIf(Vpc,"VOLUME ANALYSIS COMMENTARY:\n","");
   
WriteIf(utbar , "Up-thrusts are designed to catch stops and to mislead as many traders as possible.  
They are normally seen after there has been weakness in the background. The market makers know that the
market is weak, so the price is marked up to catch stops, encourage traders to go long in a weak market,
AND panic traders that are already Short into covering their very good position.","")+
WriteIf(utcond3,"This upthrust bar is at high volume.This is a sure sign of weakness. One may even seriously 
consider ending the Longs AND be ready to reverse","")+WriteIf(utbar OR utcond3," Also note that A wide spread 
down-bar that appears immediately after any up-thrust, tends to confirm the weakness (the market makers are 
locking in traders into poor positions).
With the appearance of an upthrust you should 
certainly be paying attention to your trade AND your stops. On many upthrusts you will find that the market will 
'test' almost immediately.","")+WriteIf(utcond1 , "A wide spread down bar following a Upthrust Bar.
This confirms weakness. The Smart Money is locking in Traders into poor positions","");
WriteIf(utcond2 , "Also here the volume is high( Above Average).This is a sure sign of weakness. The Smart Money is 
locking in Traders into poor positions","")+WriteIf(stdn, "Strength Bar. The stock has been in a down Trend. An upbar 
with higher Volume closing near the High is a sign of strength returning. The downtrend is likely to reverse soon. ","")+
WriteIf(stdn1,"Here the volume is very much above average. This makes this indication more stronger. ","")+ 
WriteIf(bycond,"The previous bar saw strength coming back. This upbar confirms strength. ","")+
WriteIf(Hutbar," A pseudo Upthrust. This normally appears after an Up Bar with above average volume. This looks like an upthrust bar
closing down near the Low. But the Volume is normally Lower than average. this is a sign of weakness.If the Volume is High then weakness 
increases. Smart Money is trying to trap the retailers into bad position. ","")+
WriteIf(Hutcond, "A downbar after a pseudo Upthrust Confirms weakness. If the volume is above average the weakness is increased. ","")+
WriteIf(Lvtbar2,"The previous bar was a successful Test of supply. The current bar is a upbar with higher volume. This confirms strength","")+
WriteIf(dbar,"A wide range, high volume bar in a up trend closing down is an indication the Distribution is in progress. The smart money
is Selling the stock to the late Comers rushing to Buy the stock NOT to be Left Out Of a Bullish move. ","")+
WriteIf(Lvtbar2,"The previous bar was a successful Test of supply. The current bar is a upbar with higher volume. This confirms strength","")+
WriteIf(tcbar,"The stock has been moving up on high volume. The current bar is a Downbar with high volume. Indicates weakness and probably end of the up move","")+
WriteIf(eftup,"Effort to Rise bar. This normally found in the beginning of a Markup Phase and is bullish sign.These may be found at the top of an Upmove as the Smart money makes a 
last effort to move the price to the maximum","")+
WriteIf(eftdn,"Effort to Fall bar. This normally found in the beginning of a Markdown phase.","")+
   
WriteIf(nsbar,"No Supply. A no supply bar indicates supply has been removed and the Smart money can markup the price. It is better to wait for confirmation","")+
WriteIf(stvol,"Stopping Volume. This will be an downbar during a bearish period closing towards the Top accompanied by High volume.
A stopping Volume normally indicates that smart money is absorbing the supply which is a Indication that they are Bullishon the MArket.
Hence we Can expect a reversal in the down trend. ","")+
WriteIf(ndbar, "No Demand
Brief Description:
Any up bar which closes in the middle OR Low, especially if the Volume has fallen off, 
is a potential sign of weakness.
   
Things to Look Out for:
if the market is still strong, you will normally see signs of strength in the next few bars, 
which will most probably show itself as a:
* Down bar with a narrow spread, closing in the middle OR High. 
* Down bar on Low Volume.",""); 
_SECTION_END(); 
   
//=========================================================================================
 
//TITLE
_SECTION_BEGIN("Title");
if( Status("action") == actionIndicator ) 
(
Title = EncodeColor(colorWhite)+ "Volume Price Analysis" + " - " Name() + " - " + EncodeColor(colorRed)+ Interval(2) + EncodeColor(colorWhite) +
 "  - " + Date() +" - " +EncodeColor(colorLime)+ "Volume= "+WriteVal(V)+"--"+EncodeColor(colorYellow)+
WriteIf (utbar, " An Upthrust Bar. A sign of weakness. ","")+
WriteIf (utcond1, " A downbar after an Upthrust. Confirm weakness. ","")+
WriteIf (utcond2 AND NOT utcond1, " A High Volume downbar after an Upthrust. Confirm weakness.","")+
WriteIf (utcond3, "This upthrust at very High Voume, Confirms weakness","")+
WriteIf (stdn1, "Strength seen returning after a down trend. High volume adds to strength. ","")+
WriteIf (stdn0 AND NOT stdn, "Strength seen returning after a down trend. ","")+
WriteIf (stdn AND NOT stdn1, "Strength seen returning after a long down trend. ","")+
WriteIf (Lvtbar, "Test for supply. ","")+
WriteIf (Lvtbar2, "An Upbar closing near High after a Test confirms strength. ","")+
WriteIf (bycond, "An Upbar closing near High. Confirms return of Strength. ","")+
WriteIf (dbar, "A High Volume Up Bar closing down in a uptrend shows Distribution. ","")+
WriteIf (Hutbar, "Psuedo UpThrust.   A Sign of Weakness. ","")+
WriteIf (Hutcond, "A Down Bar closing down after a Pseudo Upthrust confirms weakness. ","")+
WriteIf (Lvtbar1, "Test for supply in a uptrend. Sign of Strength. ","")+
WriteIf (stdn2, "High volume upbar closing on the high indicates strength. ","")+
WriteIf (Tcbar, "High volume Downbar after an upmove on high volume indicates weakness. ","")+
WriteIf (ndbar, "No Demand. A sign of Weakness. ","")+
WriteIf (nsbar, "No Supply. A sign of Strength. ","")+
WriteIf (eftup, "Effort to Rise. Bullish sign ","")+
WriteIf (eftdn, "Effort to Fall. Bearish sign ","")+
WriteIf (eftupfl, "Effort to Move up has failed. Bearish sign ","")+
WriteIf (stvol, "Stopping volume. Normally indicates end of bearishness is nearing. ","")+
("\n Volume: ")+WriteIf(V>Vp2,EncodeColor(colorLime)+"Very High",WriteIf(V>Vp1,EncodeColor(colorLime)+" High",WriteIf(V>Vrg,EncodeColor(colorLime)+"Above Average",
WriteIf(V<Vrg AND V>Vn1,EncodeColor(colorRed)+"Less than Average",WriteIf(V<Vn1,"Low","")))))+
(EncodeColor(colorYellow)+"      Spread: ")+WriteIf(rg >(arg*2),EncodeColor(colorLime)+" Wide",WriteIf(rg>arg,EncodeColor(colorLime)+" Above Average",EncodeColor(colorRed)+" Narrow"))+
(EncodeColor(colorYellow)+"      Close:  ")+WriteIf(Vhcls,EncodeColor(colorLime)+"Very High",WriteIf(ucls,EncodeColor(colorLime)+"High",WriteIf(mcls,EncodeColor(colorYellow)+"Mid",
WriteIf(dcls,EncodeColor(colorRed)+"Down","Very Low"))))+
("\n Trend: ")+WriteIf(tls>0,EncodeColor(colorLime)+"  Short Term-UP",EncodeColor(colorRed)+"  Short Term-Down")+
WriteIf(tlm>0,EncodeColor(colorLime)+"         MID Term-UP",EncodeColor(colorRed)+"        Mid Term-Down")+
WriteIf(tll>0,EncodeColor(colorLime)+"       Long Term-Up",EncodeColor(colorRed)+"         Long term-Down")); 
_SECTION_END();
//============================================================================================================================================================================================
_SECTION_BEGIN("Exploration");
   
Filter= utbar OR utcond2 OR utcond3 OR stdn OR stdn0 OR stdn1 OR stdn2;
   
AddColumn(utcond3,"weekness coming in",1,colorWhite,IIf(utcond3,colorRed,colorWhite));
AddColumn(utcond2,"sure weakness",1,colorWhite,IIf(utcond2,colorRed,colorWhite));
AddColumn(utbar,"sure weakness",1,colorWhite,IIf(utbar,colorRed,colorWhite));
AddColumn(stdn ,"Strength after long dtrend",1,colorWhite,IIf(stdn,colorLime,colorWhite));
AddColumn(stdn0 ,"Strength after dtrend",1,colorWhite,IIf(stdn0,colorLime,colorWhite));
AddColumn(stdn1 ,"Strength stronger",1,colorWhite,IIf(stdn1,colorLime,colorWhite));
AddColumn(stdn2 ,"strength",1,colorWhite,IIf(stdn2,colorLime,colorWhite));
_SECTION_END();
//=====================================================================
//background stock name (works only on Amibroker version 5.00 onwards.
//=====================================================================
_SECTION_BEGIN("Name");
//GfxSetOverlayMode(1);
//GfxSelectFont("Tahoma", Status("pxheight")/6 );
//GfxSetTextAlign( 6 );// center alignment
//GfxSetTextColor( ColorRGB( 200, 200, 200 ) );
//GfxSetTextColor( ColorHSB( 42, 42, 42 ) );
//GfxSetBkMode(0); // transparent
//GfxTextOut( Name(), Status("pxwidth")/2, Status("pxheight")/12 );
//GfxSelectFont("Tahoma", Status("pxheight")/12 );
//GfxTextOut( "VPA", Status("pxwidth")/2, Status("pxheight")/3 );
//GfxSelectFont("Tahoma", Status("pxheight")/36 );
//GfxTextOut( "www.vpanalysis.blogspot.com", Status("pxwidth")/2, Status("pxheight")/2 );
_SECTION_END();
//======================================================================================
   
_SECTION_BEGIN("VOLUME1");
Codename = "Volume - 4 Color" ;
   
 // Color Conditions
   
 Upgreen = C > Ref( C, -1 ) AND C > O ;
   
 DownRed = C <= Ref( C, -1 ) AND C < O;
   
 UpPurple = C > Ref( C, -1 ) AND C < O;
   
DownBlue = C <= Ref( C, -1 ) AND C > O;
   
 VColor = IIf( UpGreen, colorGreen, IIf( DownRed, colorRed, IIf( UpPurple,
 colorPlum, colorBlue ) ) );
   
 VStyle  = ParamStyle( "Volume Style", styleHistogram | styleOwnScale |
 styleThick | styleNoLabel, maskHistogram ) ;
   
 VHeight = Param( "1/N Height", 4, 1, 10, 0.5 );
   
 Plot( V, "   Volume", VColor, VStyle, VHeight );
_SECTION_END();
 
Title = Name()+ " Price Break Indicator." ;
//+ "  Trend is " + Trend_Text + ".  SEQUENCE IS " + Sequence_Text;
Plot(C,Title,colorBlack,styleCandle);
 
/////////   Parameters  ////////
 
nBars_To_Scan = Param("Number of bars to Scan",50, 10,480, 10);     //Number of bars to include in scan
PB_Interval = Param("Number of Bars for Price Break",3,2,3,1);
 
/////////  Use Array of Prices and Price Breaks to Look Back and Determine What Price Break is For Current Bar
Seedbar = nBars_To_Scan + 1;                    //Need an initial value to start the PB process
if (BarCount > Seedbar)                      //Make sure there are enough bars available to evaluate
{
                                             
Price[0]= LastValue(Ref(C,-Seedbar));           //Seed the 0 Bar in the Array with Values
Trend[0]=1;                                     //1 = Long, 0=Short
Sequence[0]=0;                                  //Sequence counter - counts number of new price breaks
Price_Break[0] = LastValue(Ref(C,-Seedbar));
High_C1[0] = LastValue(Ref(C,-Seedbar));        //Highest Close 1 Ago
High_C2[0]= LastValue(Ref(C,-Seedbar));         //Highest Close 2 Ago
High_C3[0]= LastValue(Ref(C,-Seedbar));         //Highest Close 3 Ago
Low_C1[0] = LastValue(Ref(C,-Seedbar));         //Lowest Close 1 Ago
Low_C2[0] = LastValue(Ref(C,-Seedbar));         //Lowest Close 2 Ago
Low_C3[0] = LastValue(Ref(C,-Seedbar));         //Lowest Close 3 Ago
                                             
for ( i=1; i < Seedbar ; i++)    
{                                          
    Prior = i-1;                                    //Index for Prior entry in array.  Set the current array values to
    Trend[i]=Trend[Prior];                      //prior values to make sure everything that isn't changed later
    Price_Break[i] = Price_Break[Prior];            //gets carried forward to the next row in the array.
            Low_C1[i] = Low_C1[Prior];          //Carryover current values
            Low_C2[i] = Low_C2[Prior];
            Low_C3[i] = Low_C3[Prior]; 
            High_C1[i] = High_C1[Prior];            //Carryover current values
            High_C2[i] = High_C2[Prior];
            High_C3[i] = High_C3[Prior];
            Sequence[i] = Sequence[Prior];
 
    Price[i] = LastValue (Ref (C,-(Seedbar-i)));    //Seedbar is the bar just in front of where I start the method.  Works since i starts at 1
 
    if (Price[i] >Price[Prior] AND Trend[Prior] == 1 )   // If Close is Greater than the prior close And the Trend is Long
    {       if (Price[i] >High_C1[Prior])            //If the Close is greater than the last highest close
            {                                   //Test For Price Break.  The IIF is there to accomodate a 2 price or 3 price break option
                                                //based on the PB_Interval parameter
            Price_Break[i] = IIf(PB_Interval == 3,High_C3[Prior],IIf(PB_Interval == 2,High_C2[Prior],High_C3[Prior])); 
                                                //The 3PB method says I take the highest close 4 ago as the new price break.
            Sequence[i] = Sequence[i] + 1;      //Increment Sequence if Price Break
            High_C3[i] = High_C2[Prior];            //Stacking the higher closes like this avoids having to go back and iterate through the.
            High_C2[i] = High_C1[Prior];            //closes to find and count the higher closes.  They are just carried forward in the stack.
            High_C1[i] = Price[i];              //When a higher close occurs, it is put on the top of the stack, each close below is
            }                                   //pushed down in sequence, and the earliest (farthest back) close goes away.
    }      
 
    if (Price[i] >Price[Prior] AND Trend[Prior] == 0 )   // If Close is Greater than the prior close And the Trend is Short
    {       if (Price[i] >Price_Break[Prior])        //If Close > Price Break in trend is Short, Reverse and go Long
            {
            High_C1[i] = High_C2[i] = High_C3[i] = Price[i];                //Initialize sequence of new Highs
            Price_Break[i] = Price[i];              //Set new value for Price Break
            Trend[i] = 1;                           //Set the trend Long
            Sequence = 0;
            }
    }      
 
    if (Price[i] <Price[Prior] AND Trend[Prior] ==0) // If The Close is less than the prior close And the Trend is Short
    {       if (Price[i] <Low_C1[Prior])         //If the Close is less than the last lowest close
            {
            Price_Break[i] = IIf(PB_Interval == 3,Low_C3[Prior],IIf(PB_Interval == 2,Low_C2[Prior],Low_C3[Prior])); //Test For Price Break
            Sequence[i] = Sequence[i] + 1;      //Increment Sequence if Price Break
            Low_C3[i] = Low_C2[Prior];          //Update sequence of new Lows
            Low_C2[i] = Low_C1[Prior];
            Low_C1[i] = Price [i];
            }
    }      
 
    if (Price[i] <Price[Prior] AND Trend[Prior] ==1) // If The Close is less than the prior close And the Trend is Long
    {       if (Price[i] < Price_Break[Prior])               //If Close < Price Break in Long Trend, reverse and go Short
            {
            Low_C1[i] = Low_C2[i] = Low_C3[i] = Price[i];   //Initialize sequence of new Lows
            Price_Break[i] = Price[i];                          //Set new value for Price Break
            Trend[i] = 0;                               //Set Trend Short
            Sequence = 0;
            }
    }      
 
////  Plot the Price Breaks.
Bar_x1=BarCount - (nBars_To_Scan - Prior );
Bar_x2=BarCount - ( nBars_To_Scan - i);
PB_Color = IIf(Trend[i] == 1,colorGreen, colorRed);
Plot(LineArray(Bar_x1,Price_Break[i],Bar_x2,Price_Break[i],extend=0),"",PB_Color,styleThick);
Sequence_Text = NumToStr(Sequence,format=1.0);
Trend_Text = WriteIf(Trend[i] > 0, "Long","Short");
 
}          
 
}                                      
 
PositionSize = MarginDeposit = 1;
CommissionMode = 1;
MA1Length = Optimize("MA fast",Param("MA SZYBKA",27,3,60,1),3,60,1);
MA2Length = Optimize("MA medium",Param("MA SREDNIA",60,40,135,1),40,135,2);
MA3Length = Optimize("MA slow",Param("MA WOLNA",95,40,350,1),50,250,3);
XXLength =1; //Optimize("MnoznikMA11",Param("mnoznikMA1",1,0.90,1.1,0.005),0.9,1.1,0.005);
ma_type = ParamList("Rodzaj rednich", "TEMA|MA|EMA|DEMA|WMA|TSF|Wilders|LinearReg|Hull", 0);
if(ma_type == "Hull") { MA1 = WMA(2*(WMA(C, MA1Length/2))-WMA(C, MA1Length) ,4 ); MA2 = WMA(2*(WMA(C, MA2Length/2))-WMA(C, MA2Length) ,4 ); MA3 = WMA(2*(WMA(C, MA3Length/2))-WMA(C, MA3Length) ,4 ); }
if(ma_type == "MA") { MA1 = MA(C,MA1Length); MA2 = MA(C,MA2Length); MA3 = MA(C,MA3Length); }
if(ma_type == "LinearReg") { MA1 = LinearReg(C,MA1Length); MA2 = LinearReg(C,MA2Length); MA3 = LinearReg(C,MA3Length); }
if(ma_type == "EMA") { MA1 = EMA(C,MA1Length); MA2 = EMA(C,MA2Length); MA3 = EMA(C,MA3Length); }
if(ma_type == "DEMA") { MA1 = DEMA(C,MA1Length); MA2 = DEMA(C,MA2Length); MA3 = DEMA(C,MA3Length); }
if(ma_type == "WMA") {MA1 = WMA(C,MA1Length); MA2 = WMA(C,MA2Length); MA3 = WMA(C,MA3Length); }
if(ma_type == "TSF") { MA1 = TSF(C,MA1Length); MA2 = TSF(C,MA2Length); MA3 = TSF(C,MA3Length); }
if(ma_type == "TEMA") { MA1 = TEMA(C,MA1Length); MA2 = TEMA(C,MA2Length); MA3 = TEMA(C,MA3Length); }
if(ma_type == "Wilders") { MA1 = Wilders(C,MA1Length); MA2 = Wilders(C,MA2Length); MA3 = Wilders(C,MA3Length); }
cond1 = Flip( MA1 < MA2 AND MA1 < MA3 , MA1 > MA2 AND MA1 > MA3 );
cond2 = Flip(MA1 > MA2 AND MA1 > MA3, MA1 < MA2 AND MA1 < MA3);
Buy = MA1 > MA2 AND MA1 > MA3 AND Ref(Cond1,-1); 
Sell = MA1 < MA2 OR MA1 < MA3 ; 
Short = MA1 < MA2 AND MA1 < MA3 AND Ref(Cond2,-1); 
Cover = MA1 > MA2 OR MA1 > MA3;
Buy = ExRem (Buy,Sell); Sell = ExRem(Sell,Buy); Short = ExRem(Short, Cover); Cover = ExRem(Cover, Short);
 
//
_SECTION_BEGIN("price style");
SetChartOptions(0,chartShowArrows|chartShowDates);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) Vol " +
WriteVal( V, 1.0 ) +
" {{VALUES}}"
O, H, L, C, SelectedValue( ROC( C, 1 )) ));
Plot( C, "Close", ParamColor("Color", colorBlack ), 
ParamStyle("Style",styleNoTitle|styleCandle,maskAll) );
_SECTION_END();
   
_SECTION_BEGIN();
   
//eliminacja powtarzajacych sie sygnalow
//Buy = ExRem (Buy,Sell); Sell = ExRem(Sell,Buy); Short = ExRem(Short, Cover); Cover = ExRem(Cover, Short);
ShowTriangles = ParamToggle( "Pokaz sygnaly", "HIDE|SHOW", 1 );
if ( showTriangles ) {
PlotShapes(Buy * shapeUpArrow, colorGreen, 0, Low); 
PlotShapes(Short * shapeDownArrow, colorRed, 0, High); 
PlotShapes(Sell * shapeSmallDownTriangle, colorRed, 0, High);  
PlotShapes(Cover * shapeSmallUpTriangle, colorGreen, 0, Low); }
///////////////////
_SECTION_END();

5 comments

1. rajaswamy

not working

2. godbeest

NOT WORKING
ADMINISTRATOR !!!!!!!!!
ERORRRRRRRRR

3. rh0390

temp = temp + data_centred[j]*data_centred[j+i];
Line 772 (from above line) it sows error msg

4. godbeest

Review CODE
TANKS .

5. szgolyas

line 1667 error

Leave Comment

Please login here to leave a comment.

Back