void TradeStrangle()
{
var PROB = optimize(90,50,95,5);
var days = 7*7;//optimize(6*7,2*7,8*7,7);
var maxVol = optimize(0.25,0.10,0.2,0.02); //0.2;
var minVol = optimize(0,0,0.10,0.02);
if (vol > minVol && vol < maxVol)
{
if(!contractUpdate(Asset,0,CALL|PUT)) return;
var PriceCurrent = Contracts->fUnl;
contractCPD(days);
var highPrice = cpdv(50+0.5*PROB); //parameter is percent probability
var lowPrice = cpdv(50-0.5*PROB);
//Find days for contract
CONTRACT* c = contractFind(PUT,days,2,6);
int date = c->Expiry;
var spread = (highPrice-PriceCurrent);
var c1s = highPrice;
var c2s = highPrice+spread/5;
CONTRACT* c1 = contract(CALL,date,c1s);
CONTRACT* c2 = contract(PUT,date,c2s);
printf("\nStrangle, %i,%i",dateStrangle,barDate);
if(NumOpenTotal < 1) // Enter new position
{
printf(",go");
var fval = (c1->fBid + c2->fBid)*Multiplier;
int numContracts = 1;
var premium = numContracts*fval;
if(combo(
c1,-numContracts,
c2,-numContracts,
0,0,
0,0))
{
MarginCost = 0.15*priceClose()/2;
Commission = 0.65/Multiplier;
enterLong(comboLeg(1));
enterLong(comboLeg(2));
dateStrangle = date;
}
}
}
}