Hello Everyone!
I continue creating data stream solution from Binance to Amibroker that was discussed here many times.
Streaming from a file generated by Python worked well except for "Permission denied error" on the Python side. I think is because Amibroker tries to read it same time Python write attempts.
So next upgrade solution would be to use DDE plugin.
After reading readme and thread1 and thread2 I run my python code:
import time
import win32ui, dde
from pywin.mfc import object as O_
import datetime
from datetime import datetime, timezone, timedelta
class DDETopic(O_.Object):
def __init__(self, topicName):
self.topic = dde.CreateTopic(topicName)
O_.Object.__init__(self, self.topic)
self.items = {}
def setData(self, itemName, value):
try:
self.items[itemName].SetData(value)
print(itemName+" "+value)
except KeyError:
print("error ")
if itemName not in self.items:
self.items[itemName] = dde.CreateStringItem(itemName)
self.topic.AddItem( self.items[itemName] )
self.items[itemName].SetData( str(value) )
serv_name='binance_'
t_name='BTCUSDT'
ddeServer = dde.CreateServer()
ddeServer.Create(serv_name)
#or serv_name+"|"+t_name+"!"+'Open' not working
ddeTopic1 = DDETopic(t_name+'!'+'Open')
ddeTopic2 = DDETopic(t_name+'!'+'High')
ddeTopic3 = DDETopic(t_name+'!'+'Low')
ddeTopic4 = DDETopic(t_name+'!'+'Last')
ddeTopic5 = DDETopic(t_name+'!'+'Time')
ddeTopic6 = DDETopic(t_name+'!'+'Volume')
ddeServer.AddTopic(ddeTopic1)
ddeServer.AddTopic(ddeTopic2)
ddeServer.AddTopic(ddeTopic3)
ddeServer.AddTopic(ddeTopic4)
ddeServer.AddTopic(ddeTopic5)
ddeServer.AddTopic(ddeTopic6)
while True:
dat1='30000'
dt_string = datetime.now().strftime("%H%M")#%H%M%S or %H:%M:%S not working
ddeTopic1.setData(t_name+'!'+'Open', dat1)
ddeTopic2.setData(t_name+'!'+'High', dat1)
ddeTopic3.setData(t_name+'!'+'Low', dat1)
ddeTopic4.setData(t_name+'!'+'Last', dat1)
ddeTopic5.setData(t_name+'!'+'Time', dt_string)
ddeTopic6.setData(t_name+'!'+'Volume', '1')
win32ui.PumpWaitingMessages(0, -1)
print('running')
time.sleep(3)
Above Python script output results:

and same time Amibroker not responding untill I close the Python script.
In the official docs every definition must consist of SERVER|TOPIC!ITEM - do I have to add SERVER| to the Topic?
Whatever I change it did not work.
Can anyone help plese?
Amibroker 6.18.0, DDE plugin version is 1.2.2.