//+------------------------------------------------------------------+ //| SotoumaTrancemitter.mq5 | //| Copyright 2010, alohafx | //| http://alohafx.blog36.fc2.com/ | //+------------------------------------------------------------------+ #property copyright "Copyright 2010, alohafx" #property link "http://alohafx.blog36.fc2.com/" #property version "1.00" #property description "EA" #property description "MT5 to MT4 Trade copier for ATC2010" #property description "Use with SotoumaReceiver.mq4 (Script)" //--- input parameters input string AccountNum = "000"; int i,digit; string Number,symbol,lots,op,tp,sl,TempString,prev_TempString=""; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { OnTrade(); //--- return(0); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- Comment(""); return; } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTrade() //void OnTimer() { TempString = ""; for( i = 0 ; i < PositionsTotal() ; i++ ) { symbol=PositionGetSymbol( i ); if( symbol == "" ) break; if(PositionGetInteger(POSITION_TYPE)>1) continue; lots=DoubleToString(PositionGetDouble(POSITION_VOLUME),1); if(PositionGetDouble(POSITION_VOLUME)<10) lots=" "+lots; digit=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS); op=DoubleToString(PositionGetDouble(POSITION_PRICE_OPEN),digit); while(StringLen(op)<7) op=" "+op; tp=DoubleToString(PositionGetDouble(POSITION_TP),digit); while(StringLen(tp)<7) tp=" "+tp; sl=DoubleToString(PositionGetDouble(POSITION_SL),digit); while(StringLen(sl)<7) sl=" "+sl; TempString = TempString + symbol + (string)PositionGetInteger(POSITION_TYPE) + lots + op + tp + sl; } //全てのポジションをひとつのストリングにする。受け側の処理のため、字数をそろえる。 if(TempString=="")TempString="no_pos"; if( TempString==prev_TempString ) return; if(AccountNum == "000") Number="mt524-"+IntegerToString(AccountInfoInteger(ACCOUNT_LOGIN)); else Number="mt524-"+AccountNum; ResetLastError(); int filehandle=FileOpen(Number+".txt",FILE_WRITE|FILE_READ|FILE_ANSI); if(filehandle!=INVALID_HANDLE) { int bw=FileWrite(filehandle,TempString); FileClose(filehandle); Print("FileOpen OK : bw= ",bw); } else Print("Operation FileOpen failed, error",GetLastError()); Comment( TempString ); prev_TempString = TempString; //---- return; //--- } //+------------------------------------------------------------------+