第11回 AIトレードシステム開発
今日から、地道にコーディングをやっていく
ソースコードの置き換え → これまでインジケータの新部分をmql4で書いていた。これをまずpythonに書き換える必要がある。
https://github.com/chanmoto/rsi_breakout
ソースはMQL4であるが、要はCライクな言語である。
最近はPYTHONを触り始めたので、これに書き換えるところから始めることにする。
乖離率の計算は下記
Kairi_buffer[i] = (RSI[i]-mov_rsi[i])/mov_rsi[i];
区間に分けて考えていく
j=0;
for(i=1; j if (Kairi_buffer[i] * Kairi_buffer[i+1] <= 0){ ii[j] = i; j++; if(j>2){ if(ii[j-1]-ii[j-3] j=j-2; } } } } 乖離率の変曲点で、上下をグループ分けする。 if(Kairi_buffer[ii[0]]<0) { for(ll=0; ll { Hi_stack[ll] = ArrayMaximum(RSI, ii[1+ll*2]-ii[0+ll*2]+1, ii[0+ll*2]+1); Lo_stack[ll] = ArrayMinimum(RSI, ii[2+ll*2]-ii[1+ll*2]+1, ii[1+ll*2]+1); } } else { for(ll=0; ll { Hi_stack[ll] = ArrayMaximum(RSI, ii[2+ll*2]-ii[1+ll*2], ii[1+ll*2]+1); Lo_stack[ll] = ArrayMinimum(RSI, ii[1+ll*2]-ii[0+ll*2], ii[0+ll*2]+1); } } ここからが実体線と予想線を作るところ(最大のポイント) for(ll=0;ll { hp1=RSI[Hi_stack[ll]]; hp2=RSI[Hi_stack[ll+1]]; hp1n=Hi_stack[ll]; hp2n=Hi_stack[ll+1]; hp3n=Hi_stack[ll-1]; if(hp2n!=hp1n) { rh=*1;} lp1=RSI[Lo_stack[ll]]; lp2=RSI[Lo_stack[ll+1]]; lp1n=Lo_stack[ll]; lp2n=Lo_stack[ll+1]; lp3n=Lo_stack[ll-1]; if(lp1n!=lp2n){ rl=*2;} for(k=0;k for(k=0;k for(k=1;k<=hp1n-hp3n;k++){ buf3[hp1n-k]=hp1-rh*k;} for(k=1;k<=lp1n-lp3n;k++){ buf4[lp1n-k]=lp1+rl*k;} } for(i=0; i buf5[i]=EMPTY_VALUE; buf6[i]=EMPTY_VALUE; } いかが売買サイン for(i=0; i // SELL if ( buf4[i]>=buf4[i+1] && MathAbs*3<0.001 && RSI[i] < buf4[i] && RSI[i+2] > buf4[i+2] && buf4[i+1] - RSI[i+1] > margin){ buf6[i]=RSI[i]; } else { buf6[i]=EMPTY_VALUE; } // BUY if ( buf3[i]<=buf3[i+1] && MathAbs*4<0.001 && RSI[i]>buf3[i] && RSI[i+2] buf5[i]=RSI[i]; } else { buf5[i]=EMPTY_VALUE; } } return(0); }