MetaStock -> Tools -> Indicator Builder -> New -> -> copy & paste complete formulae between "---8<---" lines. ==================== System trade signals ==================== ---8<--------------------------- { System trade signals v4.0 ©Copyright 2005-2006 Jose Silva For personal use only. http://www.metastocktools.com Note on simultaneous entry/exit on same bar: #[1] Ignore: entry/exit signals cancel each other; #[2] Preference (given to): new entry if currently Short, new exit if currently Long.} { Signals reference example } entry:=C>Mov(C,21,E); exit:=C0 OR init,entry); long:=bin1*(Alert(bin1=0,2) OR entry*Cum(entry)=1); short:=(bin1=0)*(Alert(bin1,2) OR exit*Cum(exit)=1); signals1:=long-short; { #2 - Preference to first entry/exit } EntryExit:=entry AND exit; bin:=ValueWhen(1,entry-exit<>0 OR init,entry); entry:=If(EntryExit,entry*(bin=0),entry); exit:=If(EntryExit,exit*bin,exit); bin2:=ValueWhen(1,entry-exit<>0 OR init,entry); long:=bin2*(Alert(bin2=0,2) OR entry*Cum(entry)=1); short:=(bin2=0)*(Alert(bin2,2) OR exit*Cum(exit)=1); signals2:=long-short; { Select #1 or #2 } binary:=If(choose=1,bin1,bin2); signals:=If(choose=1,signals1,signals2); { Plot in own window } 0; Ref(If(plot=2,entry,0),-delay); Ref(If(plot=1,signals, If(plot=2,-exit,binary)),-delay) ---8<--------------------------- =============================== System trade signals - original =============================== ---8<--------------------------- { Original trade signals code. BarsSince() function prevents first entry/exit plot} { Signals reference example } entry:=C>Mov(C,21,E); exit:=C-1)=1; entryInit:=Cum(entry)=1; flag:=BarsSince(Init OR entry) 0,signals); { Plot in own window } Ref(If(plot=1,signals, If(plot=2,entry-exit,binary)),-delay) ---8<--------------------------- http://www.metastocktools.com