Orders Execution
Miscellaneous
0
Views
0
Downloads
0
Favorites
nn1
#property copyright "S.Projects"
#property link "cortex.snowcron.com"
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Yellow
#property indicator_minimum 0
#property indicator_maximum 1
// indicator parameters
// To do: read parameters, including weights, from a description file
int nNocInterval = 12;
double dNocRange = 0.012;
int nNocMa = 5;
int nOutLag = 2;
int nLayers = 3;
int arrNeurons[3] = { 17, 5, 1 };
int nNumOfLags = 17;
int arrLags[17] =
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
double arrWeights_0[305];
double arrWeights_1[90];
double arrWeights_2[6];
// Layer: 0
arrWeights_0[0] = 0.376436;
arrWeights_0[1] = 0.690657;
arrWeights_0[2] = 0.512335;
arrWeights_0[3] = 0.786179;
arrWeights_0[4] = 0.671377;
arrWeights_0[5] = 0.614279;
arrWeights_0[6] = 0.539750;
arrWeights_0[7] = 0.820380;
arrWeights_0[8] = 0.750566;
arrWeights_0[9] = 0.707890;
arrWeights_0[10] = 0.396094;
arrWeights_0[11] = 0.725720;
arrWeights_0[12] = 0.555349;
arrWeights_0[13] = 0.395257;
arrWeights_0[14] = 0.227280;
arrWeights_0[15] = 0.128274;
arrWeights_0[16] = 0.289072;
arrWeights_0[17] = 0.387067;
arrWeights_0[18] = 0.662450;
arrWeights_0[19] = 1.019812;
arrWeights_0[20] = 0.761206;
arrWeights_0[21] = 0.984280;
arrWeights_0[22] = 0.878235;
arrWeights_0[23] = 0.829384;
arrWeights_0[24] = 0.786234;
arrWeights_0[25] = 1.189799;
arrWeights_0[26] = 1.112219;
arrWeights_0[27] = 1.069424;
arrWeights_0[28] = 0.640762;
arrWeights_0[29] = 0.730670;
arrWeights_0[30] = 0.067006;
arrWeights_0[31] = -0.320953;
arrWeights_0[32] = -0.600880;
arrWeights_0[33] = -0.371686;
arrWeights_0[34] = 0.261142;
arrWeights_0[35] = 0.063323;
arrWeights_0[36] = 0.413053;
arrWeights_0[37] = 0.737687;
arrWeights_0[38] = 0.555759;
arrWeights_0[39] = 0.815068;
arrWeights_0[40] = 0.692078;
arrWeights_0[41] = 0.630406;
arrWeights_0[42] = 0.556191;
arrWeights_0[43] = 0.846380;
arrWeights_0[44] = 0.763236;
arrWeights_0[45] = 0.715549;
arrWeights_0[46] = 0.390297;
arrWeights_0[47] = 0.705948;
arrWeights_0[48] = 0.482014;
arrWeights_0[49] = 0.291501;
arrWeights_0[50] = 0.101741;
arrWeights_0[51] = 0.048724;
arrWeights_0[52] = 0.280508;
arrWeights_0[53] = 0.428389;
arrWeights_0[54] = -6.065296;
arrWeights_0[55] = 0.559039;
arrWeights_0[56] = 1.732407;
arrWeights_0[57] = 2.446417;
arrWeights_0[58] = 2.226664;
arrWeights_0[59] = 1.043498;
arrWeights_0[60] = -0.892194;
arrWeights_0[61] = 0.538670;
arrWeights_0[62] = 1.696599;
arrWeights_0[63] = 2.895421;
arrWeights_0[64] = 1.936742;
arrWeights_0[65] = 0.857415;
arrWeights_0[66] = 1.777173;
arrWeights_0[67] = 1.489486;
arrWeights_0[68] = 0.990452;
arrWeights_0[69] = -0.312611;
arrWeights_0[70] = -2.485575;
arrWeights_0[71] = 5.784152;
arrWeights_0[72] = 0.691233;
arrWeights_0[73] = 1.003065;
arrWeights_0[74] = 0.746760;
arrWeights_0[75] = 0.973191;
arrWeights_0[76] = 0.868018;
arrWeights_0[77] = 0.821039;
arrWeights_0[78] = 0.770604;
arrWeights_0[79] = 1.139881;
arrWeights_0[80] = 1.057454;
arrWeights_0[81] = 1.004390;
arrWeights_0[82] = 0.595049;
arrWeights_0[83] = 0.733458;
arrWeights_0[84] = 0.177670;
arrWeights_0[85] = -0.170966;
arrWeights_0[86] = -0.443584;
arrWeights_0[87] = -0.345470;
arrWeights_0[88] = 0.135814;
arrWeights_0[89] = -0.010206;
arrWeights_0[90] = 0.585687;
arrWeights_0[91] = 1.040471;
arrWeights_0[92] = 0.778059;
arrWeights_0[93] = 0.994592;
arrWeights_0[94] = 0.882501;
arrWeights_0[95] = 0.819930;
arrWeights_0[96] = 0.783313;
arrWeights_0[97] = 1.225092;
arrWeights_0[98] = 1.138965;
arrWeights_0[99] = 1.112052;
arrWeights_0[100] = 0.667895;
arrWeights_0[101] = 0.725504;
arrWeights_0[102] = -0.042205;
arrWeights_0[103] = -0.470107;
arrWeights_0[104] = -0.758346;
arrWeights_0[105] = -0.356139;
arrWeights_0[106] = 0.477461;
arrWeights_0[107] = 0.159831;
arrWeights_0[108] = 0.465873;
arrWeights_0[109] = 0.827723;
arrWeights_0[110] = 0.635881;
arrWeights_0[111] = 0.876557;
arrWeights_0[112] = 0.751904;
arrWeights_0[113] = 0.689548;
arrWeights_0[114] = 0.624036;
arrWeights_0[115] = 0.943642;
arrWeights_0[116] = 0.844483;
arrWeights_0[117] = 0.793347;
arrWeights_0[118] = 0.439269;
arrWeights_0[119] = 0.710473;
arrWeights_0[120] = 0.362673;
arrWeights_0[121] = 0.107347;
arrWeights_0[122] = -0.123129;
arrWeights_0[123] = -0.079149;
arrWeights_0[124] = 0.300953;
arrWeights_0[125] = 0.333110;
arrWeights_0[126] = 36.878339;
arrWeights_0[127] = -34.157785;
arrWeights_0[128] = 13.570499;
arrWeights_0[129] = -9.445193;
arrWeights_0[130] = 5.906855;
arrWeights_0[131] = -2.631383;
arrWeights_0[132] = -3.466850;
arrWeights_0[133] = 1.387212;
arrWeights_0[134] = 1.168750;
arrWeights_0[135] = -1.252440;
arrWeights_0[136] = -4.167107;
arrWeights_0[137] = 7.462264;
arrWeights_0[138] = 4.218665;
arrWeights_0[139] = -10.616881;
arrWeights_0[140] = 2.816792;
arrWeights_0[141] = -0.854816;
arrWeights_0[142] = 0.465124;
arrWeights_0[143] = 3.805423;
arrWeights_0[144] = 17.371809;
arrWeights_0[145] = -10.758329;
arrWeights_0[146] = 4.288758;
arrWeights_0[147] = -3.300900;
arrWeights_0[148] = -1.387066;
arrWeights_0[149] = -0.545407;
arrWeights_0[150] = -0.627846;
arrWeights_0[151] = 0.359405;
arrWeights_0[152] = -0.910465;
arrWeights_0[153] = 1.672222;
arrWeights_0[154] = -1.087077;
arrWeights_0[155] = 1.711690;
arrWeights_0[156] = 1.892743;
arrWeights_0[157] = 1.370835;
arrWeights_0[158] = -1.074922;
arrWeights_0[159] = -2.069598;
arrWeights_0[160] = 2.132245;
arrWeights_0[161] = 3.323435;
arrWeights_0[162] = 3.192245;
arrWeights_0[163] = 0.722216;
arrWeights_0[164] = 0.595036;
arrWeights_0[165] = 2.562026;
arrWeights_0[166] = 4.118245;
arrWeights_0[167] = 2.533825;
arrWeights_0[168] = 0.661547;
arrWeights_0[169] = -0.522384;
arrWeights_0[170] = -0.923482;
arrWeights_0[171] = -0.744284;
arrWeights_0[172] = -0.531758;
arrWeights_0[173] = -1.737114;
arrWeights_0[174] = -0.894963;
arrWeights_0[175] = 0.335197;
arrWeights_0[176] = 2.767129;
arrWeights_0[177] = 0.169424;
arrWeights_0[178] = -1.868230;
arrWeights_0[179] = 2.057215;
arrWeights_0[180] = 0.408584;
arrWeights_0[181] = 0.730536;
arrWeights_0[182] = 0.549013;
arrWeights_0[183] = 0.810092;
arrWeights_0[184] = 0.687577;
arrWeights_0[185] = 0.626130;
arrWeights_0[186] = 0.551439;
arrWeights_0[187] = 0.839836;
arrWeights_0[188] = 0.758454;
arrWeights_0[189] = 0.711269;
arrWeights_0[190] = 0.388133;
arrWeights_0[191] = 0.706349;
arrWeights_0[192] = 0.491137;
arrWeights_0[193] = 0.305519;
arrWeights_0[194] = 0.119262;
arrWeights_0[195] = 0.059367;
arrWeights_0[196] = 0.280111;
arrWeights_0[197] = 0.432421;
arrWeights_0[198] = 11.382900;
arrWeights_0[199] = -2.355699;
arrWeights_0[200] = 0.800231;
arrWeights_0[201] = -0.812782;
arrWeights_0[202] = -1.725548;
arrWeights_0[203] = 0.506914;
arrWeights_0[204] = 3.685745;
arrWeights_0[205] = -1.570360;
arrWeights_0[206] = -0.678070;
arrWeights_0[207] = -1.385545;
arrWeights_0[208] = 0.665419;
arrWeights_0[209] = -2.403472;
arrWeights_0[210] = 0.348713;
arrWeights_0[211] = 0.948801;
arrWeights_0[212] = 3.943966;
arrWeights_0[213] = 0.609010;
arrWeights_0[214] = -2.954932;
arrWeights_0[215] = 6.570737;
arrWeights_0[216] = 1.098680;
arrWeights_0[217] = 0.457162;
arrWeights_0[218] = 0.047123;
arrWeights_0[219] = 0.314413;
arrWeights_0[220] = 0.270546;
arrWeights_0[221] = 0.271241;
arrWeights_0[222] = 0.444340;
arrWeights_0[223] = 0.685449;
arrWeights_0[224] = 0.881795;
arrWeights_0[225] = 0.904727;
arrWeights_0[226] = 0.538997;
arrWeights_0[227] = 0.274688;
arrWeights_0[228] = -0.107260;
arrWeights_0[229] = -0.182735;
arrWeights_0[230] = -0.297917;
arrWeights_0[231] = -0.722563;
arrWeights_0[232] = -1.004438;
arrWeights_0[233] = 2.114029;
arrWeights_0[234] = 0.625319;
arrWeights_0[235] = 1.073737;
arrWeights_0[236] = 0.794572;
arrWeights_0[237] = 1.012257;
arrWeights_0[238] = 0.909403;
arrWeights_0[239] = 0.851104;
arrWeights_0[240] = 0.819041;
arrWeights_0[241] = 1.284499;
arrWeights_0[242] = 1.213157;
arrWeights_0[243] = 1.195116;
arrWeights_0[244] = 0.731964;
arrWeights_0[245] = 0.733472;
arrWeights_0[246] = -0.119051;
arrWeights_0[247] = -0.574390;
arrWeights_0[248] = -0.865588;
arrWeights_0[249] = -0.405175;
arrWeights_0[250] = 0.494158;
arrWeights_0[251] = 0.142718;
arrWeights_0[252] = 0.443620;
arrWeights_0[253] = 0.790221;
arrWeights_0[254] = 0.604280;
arrWeights_0[255] = 0.852407;
arrWeights_0[256] = 0.728354;
arrWeights_0[257] = 0.666281;
arrWeights_0[258] = 0.596990;
arrWeights_0[259] = 0.903026;
arrWeights_0[260] = 0.809120;
arrWeights_0[261] = 0.758782;
arrWeights_0[262] = 0.416953;
arrWeights_0[263] = 0.708992;
arrWeights_0[264] = 0.415040;
arrWeights_0[265] = 0.186673;
arrWeights_0[266] = -0.028387;
arrWeights_0[267] = -0.027435;
arrWeights_0[268] = 0.289143;
arrWeights_0[269] = 0.376176;
arrWeights_0[270] = 0.377669;
arrWeights_0[271] = 0.691528;
arrWeights_0[272] = 0.513124;
arrWeights_0[273] = 0.786421;
arrWeights_0[274] = 0.670892;
arrWeights_0[275] = 0.613345;
arrWeights_0[276] = 0.538605;
arrWeights_0[277] = 0.819386;
arrWeights_0[278] = 0.749119;
arrWeights_0[279] = 0.706133;
arrWeights_0[280] = 0.394004;
arrWeights_0[281] = 0.723393;
arrWeights_0[282] = 0.551766;
arrWeights_0[283] = 0.390955;
arrWeights_0[284] = 0.222564;
arrWeights_0[285] = 0.125193;
arrWeights_0[286] = 0.287931;
arrWeights_0[287] = 0.397175;
arrWeights_0[288] = 0.390177;
arrWeights_0[289] = 0.704718;
arrWeights_0[290] = 0.524964;
arrWeights_0[291] = 0.793337;
arrWeights_0[292] = 0.673926;
arrWeights_0[293] = 0.614109;
arrWeights_0[294] = 0.538623;
arrWeights_0[295] = 0.821537;
arrWeights_0[296] = 0.747044;
arrWeights_0[297] = 0.702102;
arrWeights_0[298] = 0.386249;
arrWeights_0[299] = 0.712341;
arrWeights_0[300] = 0.526445;
arrWeights_0[301] = 0.357474;
arrWeights_0[302] = 0.183363;
arrWeights_0[303] = 0.099539;
arrWeights_0[304] = 0.282065;
arrWeights_0[305] = 0.431269;
// Layer: 1
arrWeights_1[0] = 0.313367;
arrWeights_1[1] = 0.600233;
arrWeights_1[2] = 0.413307;
arrWeights_1[3] = 0.723853;
arrWeights_1[4] = 0.604417;
arrWeights_1[5] = 0.564724;
arrWeights_1[6] = 0.494233;
arrWeights_1[7] = 0.776964;
arrWeights_1[8] = 0.713700;
arrWeights_1[9] = 0.689037;
arrWeights_1[10] = 0.403412;
arrWeights_1[11] = 0.743660;
arrWeights_1[12] = 0.681661;
arrWeights_1[13] = 0.582135;
arrWeights_1[14] = 0.470205;
arrWeights_1[15] = 0.320594;
arrWeights_1[16] = 0.360557;
arrWeights_1[17] = 0.505358;
arrWeights_1[18] = 0.207009;
arrWeights_1[19] = -0.600315;
arrWeights_1[20] = 0.292799;
arrWeights_1[21] = -0.486397;
arrWeights_1[22] = -0.698483;
arrWeights_1[23] = -0.466675;
arrWeights_1[24] = 0.161680;
arrWeights_1[25] = 1.267072;
arrWeights_1[26] = 0.942115;
arrWeights_1[27] = 1.601429;
arrWeights_1[28] = 0.294829;
arrWeights_1[29] = 2.066898;
arrWeights_1[30] = 1.149577;
arrWeights_1[31] = -0.608109;
arrWeights_1[32] = 0.236174;
arrWeights_1[33] = 0.223691;
arrWeights_1[34] = 0.281142;
arrWeights_1[35] = 2.639872;
arrWeights_1[36] = 0.298441;
arrWeights_1[37] = 0.585156;
arrWeights_1[38] = 0.397331;
arrWeights_1[39] = 0.714002;
arrWeights_1[40] = 0.591642;
arrWeights_1[41] = 0.547087;
arrWeights_1[42] = 0.477829;
arrWeights_1[43] = 0.768086;
arrWeights_1[44] = 0.709662;
arrWeights_1[45] = 0.679375;
arrWeights_1[46] = 0.387499;
arrWeights_1[47] = 0.736123;
arrWeights_1[48] = 0.665259;
arrWeights_1[49] = 0.564510;
arrWeights_1[50] = 0.453956;
arrWeights_1[51] = 0.305558;
arrWeights_1[52] = 0.345016;
arrWeights_1[53] = 0.508310;
arrWeights_1[54] = -0.677255;
arrWeights_1[55] = -1.032676;
arrWeights_1[56] = -0.744642;
arrWeights_1[57] = -0.925155;
arrWeights_1[58] = -1.197128;
arrWeights_1[59] = -0.992372;
arrWeights_1[60] = -0.855172;
arrWeights_1[61] = 7.016197;
arrWeights_1[62] = 5.226784;
arrWeights_1[63] = 2.411577;
arrWeights_1[64] = -0.733721;
arrWeights_1[65] = 3.402664;
arrWeights_1[66] = 1.729731;
arrWeights_1[67] = -0.991801;
arrWeights_1[68] = -0.815011;
arrWeights_1[69] = -0.677321;
arrWeights_1[70] = -0.693829;
arrWeights_1[71] = 9.138765;
arrWeights_1[72] = -0.246490;
arrWeights_1[73] = -0.391846;
arrWeights_1[74] = -0.347720;
arrWeights_1[75] = -1.096698;
arrWeights_1[76] = -0.001496;
arrWeights_1[77] = -0.693606;
arrWeights_1[78] = -0.468658;
arrWeights_1[79] = 6.178259;
arrWeights_1[80] = 4.306803;
arrWeights_1[81] = 2.409460;
arrWeights_1[82] = -0.336563;
arrWeights_1[83] = 2.374341;
arrWeights_1[84] = 1.504236;
arrWeights_1[85] = -0.726152;
arrWeights_1[86] = -0.426187;
arrWeights_1[87] = -0.254840;
arrWeights_1[88] = -0.293797;
arrWeights_1[89] = -1.892730;
// Layer: 2
arrWeights_2[0] = -0.626160;
arrWeights_2[1] = 1.717378;
arrWeights_2[2] = -0.485501;
arrWeights_2[3] = 2.751261;
arrWeights_2[4] = 2.323994;
arrWeights_2[5] = 2.047616;
double arrOutput_0[17];
double arrOutput_1[5];
double dNnOutput;
double arrPattern[18];
int nRemoveFirst = 200;
double dE = 2.7182818;
// indicator buffers
double arrNocBuffer[];
double arrNnBuffer[];
int nExtCountedBars = 0;
////////////////////////
int init()
{
// drawing settings
SetIndexStyle(0, DRAW_LINE);
SetIndexShift(0, 0);
SetIndexEmptyValue(0, 0.0);
SetIndexStyle(1, DRAW_LINE);
SetIndexShift(1, 0);
SetIndexEmptyValue(1, 0.0);
IndicatorDigits(4);
string strIndicatorShortName = "forex_nn";
IndicatorShortName(strIndicatorShortName);
// indicator buffers mapping
SetIndexBuffer(0, arrNocBuffer);
SetIndexBuffer(1, arrNnBuffer);
return(0);
}
////////////////////
int start()
{
nExtCountedBars = IndicatorCounted();
if(nExtCountedBars < 0)
return(-1);
// last counted bar will be recounted
if(nExtCountedBars > 0)
nExtCountedBars--;
Noc();
ApplyNn();
return(0);
}
///////////////////
// For the selected period:
// CLV = ((Close - Low) - (High - Close)) / (High - Low)
void Noc()
{
int nPos = Bars - nExtCountedBars;
while(nPos > 0)
{
if(nPos > Bars - nRemoveFirst)
{
arrNocBuffer[nPos] = 0.5;
nPos--;
continue;
}
double dClose = Close[nPos];
double dLow = Low[ArrayMinimum(Low, nNocInterval, nPos)];
double dHigh = High[ArrayMaximum(High, nNocInterval, nPos)];
arrNocBuffer[nPos] = 0.1;
if(dHigh - dLow > dNocRange)
arrNocBuffer[nPos] = (((dClose - dLow) - (dHigh -
dClose))
/ (dHigh - dLow)) / 2 + 0.5;
else
arrNocBuffer[nPos] = (((dClose - dLow) - (dHigh -
dClose))
/ dNocRange) / 2 + 0.5;
nPos--;
}
if(nNocMa > 1)
Ema(arrNocBuffer);
}
///////////////////
void Ema(double& arr[])
{
double dPr = 2.0 / (nNocMa + 1);
int nPos = Bars - nExtCountedBars;
while(nPos > 0)
{
if(nPos == Bars - 2)
arrNocBuffer[nPos + 1] = arr[nPos + 1];
arrNocBuffer[nPos] = arr[nPos] * dPr + arrNocBuffer[nPos + 1]
* (1 - dPr);
nPos--;
}
}
///////////////////
void ApplyNn()
{
int nPos = Bars - nExtCountedBars - 2;
while(nPos > 0)
{
if(nPos > Bars - nRemoveFirst)
{
arrNnBuffer[nPos] = 0.5;
nPos--;
continue;
}
arrNnBuffer[nPos] = 0.5;
for(int nLagNo = 0; nLagNo < nNumOfLags; nLagNo++)
arrPattern[nLagNo]
= arrNocBuffer[nPos + arrLags[nLagNo] + nOutLag];
for(int nLayer = 0; nLayer < nLayers; nLayer++)
{
// Absolute index of the weight in an array
int nWeightIdx = 0;
for(int nNeuron = 0; nNeuron < arrNeurons[nLayer];
nNeuron++)
{
double dLinearCombiner = 0;
int nInputs = arrNeurons[nLayer];
if(nLayer != 0)
nInputs = arrNeurons[nLayer - 1];
for(int nInput = 0; nInput < nInputs; nInput++)
{
double dInput;
double dWeight;
switch(nLayer)
{
case 0:
{
dInput = arrPattern[nInput];
dWeight = arrWeights_0[nWeightIdx];
}
break;
case 1:
{
dInput = arrOutput_0[nInput];
dWeight = arrWeights_1[nWeightIdx];
}
break;
default:
{
dInput = arrOutput_1[nInput];
dWeight = arrWeights_2[nWeightIdx];
}
break;
}
dLinearCombiner += dWeight * dInput;
nWeightIdx++;
}
switch(nLayer)
{
case 0:
dWeight = arrWeights_0[nWeightIdx]; break;
case 1:
dWeight = arrWeights_1[nWeightIdx]; break;
default:
dWeight = arrWeights_2[nWeightIdx]; break;
}
dLinearCombiner += (-1) * dWeight;
nWeightIdx++;
double dActivation = Activation(dLinearCombiner, 0);
switch(nLayer)
{
case 0:
arrOutput_0[nNeuron] = dActivation; break;
case 1:
arrOutput_1[nNeuron] = dActivation; break;
default:
dNnOutput = dActivation; break;
}
} // for all neurons
} // for all layers
arrNnBuffer[nPos] = dNnOutput;
nPos--;
} // for all patterns
}
///////////////////
double Activation(double u, int nType)
{
//double dEx = TANH(u / 2);
double dPow = MathPow(dE, 2 * u / 2);
double dEx = (dPow - 1) / (dPow + 1);
if(dEx == 1 || dEx == -1)
dEx = dEx * 0.999999999;
// 0 - sigmoid, 1 - tangent
if(nType == 0)
return((dEx + 1) / 2);
return(dEx);
}
Expert
#property copyright "S.Projects"
#property link "cortex.snowcron.com"
extern double dBuyLevel;
extern double dSellLevel;
extern double dStopLoss;
extern double dTrailingStop;
// ------
double dTakeProfit = 0;
datetime timePrev = 0;
int nBars;
int nSlip = 5;
double dLotSize = 0.1;
int nMagic = 0;
string strExpert = "forex_nn";
// ------
int init ()
{
nBars = Bars;
if(Symbol() == "EURUSD" && Period() == 60)
{
if(!IsTesting())
{
dBuyLevel = 0.21;
dSellLevel = 0.9;
dStopLoss = 200 * Point;
dTrailingStop = 200 * Point;
}
else
{
dStopLoss = dStopLoss * Point;
dTrailingStop = dTrailingStop * Point;
}
nMagic = 0;
}
return(0);
}
// ------
int deinit()
{
return(0);
}
// ------
int start()
{
if(Bars < 200)
return(0);
if(!IsBarEnd())
return(0);
// ------
double dNoc = iCustom(NULL, 0, "forex_nn", 1, 1);
double dNocPrev = iCustom(NULL, 0, "forex_nn", 1, 2);
for(int nCnt = OrdersTotal() - 1; nCnt >= 0; nCnt--)
{
OrderSelect(nCnt, SELECT_BY_POS, MODE_TRADES);
if(OrderMagicNumber() == nMagic)
{
if(OrderType() == OP_BUY)
{
if(dNocPrev >= dSellLevel && dNoc <= dSellLevel)
{
OrderClose(OrderTicket(),
OrderLots(), Bid, nSlip, Aqua);
break;
}
}
else if(OrderType() == OP_SELL)
{
if(dNocPrev <= dBuyLevel && dNoc >= dBuyLevel)
{
OrderClose(OrderTicket(),
OrderLots(), Ask, nSlip, OrangeRed);
break;
}
}
}
}
int nNumOfOpenedOrders = 0;
for(nCnt = OrdersTotal() - 1; nCnt >= 0; nCnt--)
{
OrderSelect(nCnt, SELECT_BY_POS, MODE_TRADES);
if(OrderMagicNumber() == nMagic)
nNumOfOpenedOrders++;
}
if(nNumOfOpenedOrders == 0)
{
if(dNocPrev <= dBuyLevel && dNoc >= dBuyLevel)
{
OrderSend(Symbol(), OP_BUY, dLotSize, Ask,
nSlip, Ask - dStopLoss, 0, strExpert,
nMagic, 0, Aqua);
}
else if(dNocPrev >= dSellLevel && dNoc <= dSellLevel)
{
OrderSend(Symbol(), OP_SELL, dLotSize, Bid,
nSlip, Bid + dStopLoss, 0, strExpert,
nMagic, 0, OrangeRed);
}
}
// ------
ModifyOrders();
// ------
return(0);
}
// ------
void ModifyOrders()
{
for(int nCnt = 0; nCnt < OrdersTotal(); nCnt++)
{
OrderSelect(nCnt, SELECT_BY_POS, MODE_TRADES);
if(OrderMagicNumber() == nMagic)
{
if(OrderType() == OP_BUY)
{
if(OrderStopLoss() < Bid - dTrailingStop - 5 * Point)
{
OrderModify(OrderTicket(), OrderOpenPrice(),
Bid - dTrailingStop, OrderTakeProfit(), 0,
Aqua);
break;
}
}
if(OrderType() == OP_SELL)
{
if(OrderStopLoss() > Ask + dTrailingStop + 5 * Point)
{
OrderModify(OrderTicket(), OrderOpenPrice(),
Ask + dTrailingStop, OrderTakeProfit(),
0, OrangeRed);
break;
}
}
}
}
}
// ------
bool IsBarEnd()
{
bool bIsBarEnd = false;
if(nBars != Bars)
{
bIsBarEnd = true;
nBars = Bars;
}
return(bIsBarEnd);
}
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---