File Name: One_Black_Crow.efs, One_White_Soldier.efs

Description:
A Candlestick Strategy With Soldiers and Crows by Jerry D'Ambrosio and Barbara Star, PhD

Formula Parameters:

One_Black_Crow.efs

Minimum Eq Price: 10
Minimum Avg Volume: 100000

One_White_Soldier.efs

Minimum Eq Price: 1
Minimum Avg Volume: 100000

Notes:
The related article is copyrighted material. If you are not a subscriber
of Stocks & Commodities, please visit www.traders.com.

Download File:
One_Black_Crow.efs
One_White_Soldier.efs

One_Black_Crow.efs, One_White_Soldier.efs


EFS Code:

One_Black_Crow.efs
PHP Code:
/*********************************
Provided By:  
eSignal (Copyright c eSignal), a division of Interactive Data
Corporation. 2016. All rights reserved. This sample eSignal
Formula Script (EFS) is for educational purposes only and may be
modified and saved under a new file name.  eSignal is not responsible
for the functionality once modified.  eSignal reserves the right
to modify and overwrite this EFS file with each new release.

Description:        
    A Candlestick Strategy With Soldiers and Crows by Jerry D'Ambrosio and Barbara Star, PhD

Version:            1.00  08/09/2017

Formula Parameters:                     Default:
Minimum Eq Price                        10
Minimum Avg Volume                      100000



Notes:
The related article is copyrighted material. If you are not a subscriber
of Stocks & Commodities, please visit www.traders.com.

**********************************/

var fpArray = new Array();

function 
preMain(){
    
setPriceStudy(true);
    
setDefaultBarFgColor(Color.black,0);

    var 
0;
    
fpArray[x] = new FunctionParameter("MinPrice"FunctionParameter.NUMBER);
    
with(fpArray[x++]){
        
setLowerLimit(0);
        
setDefault(10);
        
setName("Minimum Eq Price");
    }

    
fpArray[x] = new FunctionParameter("MinVol"FunctionParameter.NUMBER);
    
with(fpArray[x++]){
        
setLowerLimit(0);
        
setDefault(100000);
        
setName("Minimum Avg Volume");
    }
}

var 
bInit false;
var 
bVersion null;

var 
xHigh null;
var 
xLow null;
var 
xClose null;
var 
xOpen null;
var 
xVolume null;
var 
avgVol null;

var 
bPotential false;
var 
nCounter 0;
var 
returnString null;

function 
main(MinPriceMinVol){
    if (
bVersion == nullbVersion verify();
    if (
bVersion == false) return;

    if (
getCurrentBarCount() < 50) return;

    if (!
bInit){
        
xHigh high();
        
xLow low();
        
xClose close();
        
xOpen open();

        
xVolume volume();
        
avgVol sma(50xVolume);

        
bInit true
    
}

    if (
getBarState() == BARSTATE_ALLBARS){
        
bInit false;
    }


    if (
xHigh.getValue(0) < MinPrice || avgVol.getValue(0) < MinVol) return;

    if (
getBarState() == BARSTATE_NEWBAR && nCounter 1){
        
returnString == " ";
        
bPotential false;
    }

    if (
getBarState() == BARSTATE_NEWBAR && bPotential){
        
nCounter++;
    }

    if (
xClose.getValue(-1) > xClose.getValue(-2) &&
        
xClose.getValue(-2) > xClose.getValue(-3) &&
        
xClose.getValue(-3) > xClose.getValue(-4) &&
        
xClose.getValue(-1) > xOpen.getValue(-1)  &&
        
xOpen.getValue(0)   < xClose.getValue(-1) &&
        
xClose.getValue(0)  < xOpen.getValue(-1)  &&
        
xOpen.getValue(0)   > xOpen.getValue(-1)
        ){
            
returnString "Potential pattern found";
            
drawTextRelative(0AboveBar1"\u00EA"Color.RGB(245,175,165), nullText.PRESET|Text.CENTER"Wingdings"10"OBC"+rawtime(0));
            
bPotential true;
            
nCounter 0;

        }
    else {
        
removeText("OBC"+rawtime(0));
        if (
nCounter == 0bPotential false;
        
returnString " ";
    }

    if (
bPotential && nCounter == 1){
        if (
xLow.getValue(0) < xClose.getValue(-1)) {
            
drawTextRelative(-1AboveBar1"\u00EA"Color.rednullText.PRESET|Text.CENTER"Wingdings"10"OBC"+rawtime(-1));
            
returnString "Confirmed pattern";
            
bPotential false;
        }
    }

    if (
isWatchList()) {
        if (
returnString == "Potential pattern found"){
            
setBarBgColor(Color.RGB(245,175,165),0);
        }
        else if (
returnString == "Confirmed pattern"){
            
setBarBgColor(Color.red,0);
        }
        return 
returnString;
    }
}

function 
verify(){
    var 
false;
    if (
getBuildNumber() < 779){

        
drawTextAbsolute(535"This study requires version 10.6 or later.",
            
Color.whiteColor.blueText.RELATIVETOBOTTOM|Text.RELATIVETOLEFT|Text.BOLD|Text.LEFT,
            
null13"error");
        
drawTextAbsolute(520"Click HERE to upgrade.@URL=http://www.esignal.com/download/default.asp",
            
Color.whiteColor.blueText.RELATIVETOBOTTOM|Text.RELATIVETOLEFT|Text.BOLD|Text.LEFT,
            
null13"upgrade");
        return 
b;
    }
    else
        
true;

    return 
b;


One_White_Soldier.efs
PHP Code:
/*********************************
Provided By:  
eSignal (Copyright c eSignal), a division of Interactive Data
Corporation. 2016. All rights reserved. This sample eSignal
Formula Script (EFS) is for educational purposes only and may be
modified and saved under a new file name.  eSignal is not responsible
for the functionality once modified.  eSignal reserves the right
to modify and overwrite this EFS file with each new release.

Description:        
    A Candlestick Strategy With Soldiers and Crows by Jerry D'Ambrosio and Barbara Star, PhD

Version:            1.00  08/09/2017

Formula Parameters:                     Default:
Minimum Eq Price                        1
Minimum Avg Volume                      100000



Notes:
The related article is copyrighted material. If you are not a subscriber
of Stocks & Commodities, please visit www.traders.com.

**********************************/

var fpArray = new Array();

function 
preMain(){
    
setPriceStudy(true);
    
setDefaultBarFgColor(Color.black,0);

    var 
0;
    
fpArray[x] = new FunctionParameter("MinPrice"FunctionParameter.NUMBER);
    
with(fpArray[x++]){
        
setLowerLimit(0);
        
setDefault(1);
        
setName("Minimum Eq Price");
    }

    
fpArray[x] = new FunctionParameter("MinVol"FunctionParameter.NUMBER);
    
with(fpArray[x++]){
        
setLowerLimit(0);
        
setDefault(100000);
        
setName("Minimum Avg Volume");
    }
}

var 
bInit false;
var 
bVersion null;

var 
xHigh null;
var 
xClose null;
var 
xOpen null;
var 
xVolume null;
var 
avgVol null;

var 
bPotential false;
var 
nCounter 0;
var 
returnString null;

function 
main(MinPriceMinVol){
    if (
bVersion == nullbVersion verify();
    if (
bVersion == false) return;

    if (
getCurrentBarCount() < 50) return;

    if (!
bInit){
        
xHigh high();
        
xClose close();
        
xOpen open();

        
xVolume volume();
        
avgVol sma(50xVolume);

        
bInit true
    
}

    if (
getBarState() == BARSTATE_ALLBARS){
        
bInit false;
    }


    if (
xHigh.getValue(0) < MinPrice || avgVol.getValue(0) < MinVol) return;

    if (
getBarState() == BARSTATE_NEWBAR && nCounter 1){
        
returnString == " ";
        
bPotential false;
    }

    if (
getBarState() == BARSTATE_NEWBAR && bPotential){
        
nCounter++;
    }

    if (
xClose.getValue(-1) < xOpen.getValue(-1) &&
        
xClose.getValue(-1) < xClose.getValue(-2) &&
        
xClose.getValue(-2) < xClose.getValue(-3) &&
        
xClose.getValue(-3) < xClose.getValue(-4) &&
        
xOpen.getValue(0)   > xClose.getValue(-1) &&
        
xClose.getValue(0)  > xOpen.getValue(-1) &&
        
xOpen.getValue(0)   < xOpen.getValue(-1)
        ){
            
returnString "Potential pattern found";
            
drawTextRelative(0BelowBar1"\u00E9"Color.RGB(171,255,171), nullText.PRESET|Text.CENTER"Wingdings"12"OWS"+rawtime(0));
            
bPotential true;
            
nCounter 0;

        }
    else {
        
removeText("OWS"+rawtime(0));
        if (
nCounter == 0){
            
bPotential false;
        }
        
returnString " ";
    }

    if (
bPotential && nCounter == 1){
        if (
xHigh.getValue(0) > xClose.getValue(-1)) {
            
drawTextRelative(-1BelowBar1"\u00E9"Color.greennullText.PRESET|Text.CENTER"Wingdings"10"OWS"+rawtime(-1));
            
returnString "Confirmed pattern";
            
bPotential false;
        }
    }

    if (
isWatchList()) {
        if (
returnString == "Potential pattern found"){
            
setBarBgColor(Color.RGB(171,255,171),0);
        }
        else if (
returnString == "Confirmed pattern"){
            
setBarBgColor(Color.green,0);
        }
        return 
returnString;
    }

}

function 
verify(){
    var 
false;
    if (
getBuildNumber() < 779){

        
drawTextAbsolute(535"This study requires version 10.6 or later.",
            
Color.whiteColor.blueText.RELATIVETOBOTTOM|Text.RELATIVETOLEFT|Text.BOLD|Text.LEFT,
            
null13"error");
        
drawTextAbsolute(520"Click HERE to upgrade.@URL=http://www.esignal.com/download/default.asp",
            
Color.whiteColor.blueText.RELATIVETOBOTTOM|Text.RELATIVETOLEFT|Text.BOLD|Text.LEFT,
            
null13"upgrade");
        return 
b;
    }
    else
        
true;

    return 
b;