// <インディケータ> // 資産カーブ描画 //------------------------------------- #import "shared_memory.dll" double set_a(); double write_a(double,int); double read_a(int); double close_a(); #import //------ #property indicator_separate_window //#property indicator_maximum 501000 //#property indicator_minimum 495000 #property indicator_buffers 2 //------ double BALANCE_C[]; double ZERO_LINE[]; double balance,profit,equity,spread,ASK_,BID_; double lots=1.0; int open_position; //-------------------------------------- int init() { set_a(); // SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1,Blue); SetIndexBuffer(0,BALANCE_C); SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1,Black); SetIndexBuffer(1,ZERO_LINE); IndicatorBuffers(2); // //BALANCE_C[801]=AccountBalance();//なぜかここではダメ profit=0.0; open_position=0; return(0); } //------------------------------------- int deinit() { close_a(); Comment(""); return(0); } //------------------------------------- int start() { // int limit = Bars-IndicatorCounted(); // //spread=Ask-Bid; spread=0.02; //Print("start(): spread= ",spread,": Bars=",Bars); BALANCE_C[1001]=AccountBalance(); //for(int i=Bars-1000;i>=0;i--)//OK //for(int i=0;i<=Bars-1000;i++)//OK for(int i=1000;i>=0;i--)//OK { // if(open_position==0) { BALANCE_C[i]=BALANCE_C[i+1]; // if(read_a(i)==+1.0) { ASK_=iClose(NULL,0,i)+spread; open_position=1; } else if(read_a(i)==-1.0) { BID_=iClose(NULL,0,i); open_position=-1; } else if(read_a(i)==0.0) { // } } // if(open_position==1) { if(read_a(i)!=-1.0) { BALANCE_C[i]=BALANCE_C[i+1]; }else if(read_a(i)==-1.0) { BALANCE_C[i]=BALANCE_C[i+1]+(iClose(NULL,0,i)-ASK_)*10000; open_position=0; ASK_=0.0; } } // if(open_position==-1) { if(read_a(i)!=1.0) { BALANCE_C[i]=BALANCE_C[i+1]; }else if(read_a(i)==1.0) { BALANCE_C[i]=BALANCE_C[i+1]+(BID_-(iClose(NULL,0,i)+spread))*10000; open_position=0; BID_=0.0; } } // } // return(0); }